协程 图像处理 reactjs spring asynchronous tkinter cmd webview drupal autocomplete axios testng vue router nginx视频教程 jquery获取下一个元素 office2016修复 hash怎么下载 windows杀死进程命令 mysql新增用户和权限 matlab读入图片 python for循环 数据库查询 python变量定义 java斐波那契数列 java获取月份 java数组扩容 java搭建 java对象和类 java删除数组中的某个元素 kafka中文教程 linux格式化命令 手机照片恢复免费软件 深入浅出通信原理 qq免安装 cubase下载 原创检测工具 ps反向选择的快捷键 r330不能识别墨盒 ug拔模 威纶通触摸屏编程软件
当前位置: 首页 > 学习教程  > 编程语言

力扣学习笔记2——整数反转

2020/10/8 20:17:16 文章标签:

整数反转 这题的重点主要是int数据的溢出 而题目要求只能存储int型数据&#xff0c;因此不能用下面的代码&#xff1a; class Solution { public:int reverse(int x) {long res0;//使用了long型数据while(x!0){resres*10x%10;x/10;}return res<-1*pow(2,31)||res>pow(2…

整数反转

这题的重点主要是int数据的溢出
而题目要求只能存储int型数据,因此不能用下面的代码:

class Solution {
public:
    int reverse(int x) {
        long res=0;//使用了long型数据
        while(x!=0){
            res=res*10+x%10;
            x/=10;
        }
        return res<=-1*pow(2,31)||res>=pow(2,31)-1?0:res;
    }
};

所以我们可以在溢出前的一次循环中判断下一步是否会溢出:

class Solution {
public:
    int reverse(int x) {
        long res=0;
            while(x!=0){
                res=res*10+x%10;
                x/=10;
                if(res+x<=-1*pow(2,31)||res+x>=pow(2,31)-1)
                    return 0;
            }
        return res;
    }
};

但是运行时间较长:
在这里插入图片描述
改进后:

class Solution {
public:
    int reverse(int x) {
        int res=0;
        while(x){
            if(res<=(pow(-2,31)-x%10)/10||res>=(pow(2,31)-1-x%10)/10)
                return 0;
            res=res*10+x%10;
            x/=10;
        }
        return res;
    }
};

改进后的重点在:

res<=(pow(-2,31)-x%10)/10//这样可以避免和数溢出

本文链接: http://www.dtmao.cc/news_show_250260.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?