码迷,mamicode.com
首页 > 编程语言 > 详细

力扣初级算法——整数反转

时间:2019-11-11 21:23:27      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:min   inf   mic   rev   解释   ||   参考   alt   details   

技术图片

 

实现代码:

class Solution {
public:
    int reverse(int x) {
        int rev=0;
        while(x!=0)
        {
            int pop=x%10;
            x=x/10;
            if(rev>INT_MAX/10 ||(rev==INT_MAX/10 && pop>7)) return 0;
            if(rev<INT_MIN/10 ||(rev==INT_MIN/10 && pop<-8)) return 0;
            rev =rev*10+pop;
        }
        return rev;
    }
};

这个代码是参考力扣官网给出的结题思路,具体如下:

将整数x取余获得数字然后成乘10加上下一次取余获得的数字。

(一开始我也是想到取余获取数值,但是没有想到可以新建一个整型数值保存处理之后的数值,也没有考虑到溢出的问题)

 

本题收获:

一、关于INT_MAX和INT_MIN(摘自:https://blog.csdn.net/u010325193/article/details/80287777

INT_MAX和INT_MIN在头文件limits.h中定义。在C/C++语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。表达式的意思是对整数21473648取负,但是2147483648已经溢出了int的上限,所以定义为(-INT_MAX -1)。

C中int类型是32位的,范围是-2147483648到2147483647 。 
(1)最轻微的上溢是INT_MAX + 1 :结果是 INT_MIN; 
(2)最严重的上溢是INT_MAX + INT_MAX :结果是-2; 
(3)最轻微的下溢是INT_MIN - 1:结果是是INT_MAX; 
(4)最严重的下溢是INT_MIN + INT_MIN:结果是0 。

由于我一直对于数值的上溢和下溢没有系统的认识,所以对于INT_MAX和INT_MIN的使用有些懵懂。

(以下是官方解释)

技术图片

 

力扣初级算法——整数反转

标签:min   inf   mic   rev   解释   ||   参考   alt   details   

原文地址:https://www.cnblogs.com/181118ljh123/p/11838362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!