zoukankan      html  css  js  c++  java
  • leetcode 7. 反转数组

    题目:

    给定一个 32 位有符号整数,将整数中的数字进行反转。

    示例 1:

    输入: 123
    输出: 321
    

     示例 2:

    输入: -123
    输出: -321
    

    示例 3:

    输入: 120
    输出: 21
    

    注意:

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

    思路:

      数字的反转和字符串的反转一样的,这道题的重点在于如何判断溢出,ans = ans *10 + a

      什么时候会发生溢出呢?INT_MAX为2147483647,INT_MIN为-2147483648

      ans>INT_MAX/10 和 ans<INT_MIN/10必然会发生溢出

      若ans==INT_MAX/10同时a>7,以及 ans==INT_MIN/10同时a<-8,此时才会发生溢出

    代码:

    class Solution {
    public:
        int reverse(int x) {
            int ans = 0;
            cout<<INT_MAX<<endl;
            cout<<INT_MIN<<endl;
            while(x)
            {
                int a = x%10;
                cout<<a<<endl;
                if(ans>INT_MAX/10||(ans==INT_MAX/10&&a>7)) return 0;
                if(ans<INT_MIN/10||(ans==INT_MIN/10&&a<-8)) return 0;
                ans = ans*10+a;
                x = x/10;
            }
            return ans;
        }
    };
  • 相关阅读:
    redis中文API
    基于redis的分布式锁
    redis安装使用配置
    windows常用命令
    curl命令详解
    linux远程连接
    memcache在大型网站的应用策略
    缓存使用的一些注意事项
    记录memcache分布式策略及算法
    U盘安装Centos7.0图解
  • 原文地址:https://www.cnblogs.com/simplekinght/p/9789726.html
Copyright © 2011-2022 走看看