美文网首页
翻转整数(2)

翻转整数(2)

作者: 洲洲哥 | 来源:发表于2020-07-02 10:37 被阅读0次

翻转整数

要求

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

输入: 123

输出: 321

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

解题思路如下

注意:
我们借鉴欧几里得求最大公约数的方法来解题。符号的处理逻辑同方法一,这里我们通过模 10 取 到最低位,然后又通过乘 10 将最低位迭代到最高位,完成翻转。

详解如下

详解
1. 设置边界极值;
2. 取给定数值的绝对值,遍历循环生成每一位数字,借鉴欧几里得算法,从 num 的最后一位开
始取值拼成新的数
3. 同步剔除掉被消费的部分
4. 如果最终结果为异常值,则直接返回 0;如果原本数据为负数,则对最终结果取反
5. 返回最终结

代码如下

function reverse(x){
    // 获取相应数的绝对值
    let rever = Math.abs(x);
    //极值
    const MAX = 2147483647;
    const MIN = -2147483648;

    let nums = 0;
    while(rever !== 0){
        // 借鉴欧几里得算法,从 nums 的最后一位开始取值拼成新的数
        mods = rever % 10;
        nums = mods + nums * 10; 
        // 剔除掉被消费的部分
        rever = Math.floor(rever / 10)
    }
    // 异常值
    if (nums >= MAX || nums <= MIN) {
        return 0;
    }
    if (x < 0) {
      return nums * -1;
    }
    return nums;
}
复杂度分析:
  • 时间复杂度: O(n)
    代码中使用for循环,次数为 n,即整数的长度,因此时间复杂度为 O(n)。
  • 空间复杂度: O(1)
    算法中只用到常数个变量,因此空间复杂度为 O(1)。

本文提供更多的面试算法题解,有利于各位看官,快速理解,更多了解,现在被问到频率最高的算法题。

如果你觉得可以请扫描我的公众号
第一时间推送,洲洲

相关文章

  • 翻转整数(2)

    翻转整数 要求 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 输入: 123 输出: ...

  • 整数翻转

    代码如下:

  • 用栈翻转

    用栈翻转 「栈翻转」是一个非常重要的性质, 有 字符串的翻转 整数的翻转 把栈转换成队列 0X00 栈翻转 整数的...

  • LeetCode:整数翻转

    About 挑战LeetCode第4天,今天的难度都算不上挑战了,一道非常easy的题,本来,这种简单的题目我们应...

  • 07整数翻转

    2019年04月16日 Day02 级别:简单 LeetCode 07 题目: 整数反转 给出一个 32 位...

  • Leetcode.190.Reverse Bits

    题目 给定一个无符号整数, 求2进制翻转后的结果. 思路 将整数分解为2的i次方的和, 如果含有2的i次方, 结果...

  • 发现一些JS基础算法问题?与大家分享一下

    1.实战翻转字符串算法 2.计算所提供整数的阶乘。 如果使用字母n代表一个整数,则阶乘是所有小于或等于n的整数的乘...

  • java实现整数翻转

    给定一个 32 位有符号整数,将整数中的数字进行反转 示例: 输入:123 输出:321 注意: 假设我们的环境只...

  • 32位整数翻转

  • 2020-02-18刷题笔记

    题目:整数翻转 lstrip() rstrip()函数:语法:str.lstrip([chars]) 参数char...

网友评论

      本文标题:翻转整数(2)

      本文链接:https://www.haomeiwen.com/subject/gpplqktx.html