全网最 low 的整数反转 | 刷题打卡

134 阅读2分钟

近期加班比较猛,再加上自己的零零碎碎的事情也特别多,基本上每天“刷题”都在深夜22点以后。每天很忙碌也很充实,比如今天做了今年的首次直播,尽管群里才几十号人,稀里糊涂讲了半小时;为了这个半小时,多少个日夜没睡好了,能力有限又不想搞砸,最终还算是及格吧。回到题目,整数反转,应用场景是……

题目描述

分类困难度👍👎
算法简单 (34.98%)2563-
标签 数学
公司 apple | bloomberg

给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例3:

输入:x = 120
输出:21

示例4:

输入:x = 0
输出:0

提示:

  • -231 <= x <= 231 - 1

思路分析

看到题目,心里不禁想,这是内卷中的内卷?有符号,有范围……好的,条件判断有了! 然后说到反转,不知道能不能用数组的反转方法,然后再遍历拼接转为字符串再转为数字; 接着加符号再判断大小范围; 似乎又是很 low 的想法。 垃圾代码走起!

AC 代码

暴力解法

/*
 * @lc app=leetcode.cn id=7 lang=javascript
 *
 * [7] 整数反转
 */

// @lc code=start
/**
 * @param {number} x
 * @return {number}
 */
var reverse = function (x) {
  let _x = Math.abs(x);
  let r = "";
  let arr = ("" + _x).split("");
  for (let i = arr.length - 1; i > -1; i--) {
    r += arr[i];
  }
  r = x < 0 ? -Number(r) : Number(r);
  if (r > Math.pow(2, 31) - 1 || r < -Math.pow(2, 31)) {
    return 0;
  } else {
    return r;
  }
};
// @lc code=end

待补充

总结

每天一题,争做掘金最 low 的解法!本来算法是以最简单的方式解决问题,而到我这,就变成了能想到什么解法就怎么解,因此解法也彻底显现了最真实的我-- low !

感觉无可救药!

本文正在参与「掘金 2021 春招闯关活动」, 点击查看活动详情