力扣7学习记录

文章讨论了如何实现整数反转的算法,通过不断取余数和累加来操作。在处理过程中,特别提到了要考虑负数的情况以及防止因结果超过int类型的取值范围导致的不准确性。关键在于对比边界值2147483647和-2147483648,在接近这些值时进行溢出检查,以确保计算的正确性。
摘要由CSDN通过智能技术生成

整数反转实现起来不是很困难。只要不断对目标取余数加到结果中再对目标缩减就能实现,并且本体是允许存在负数的,所以实现while循环的时候只要num!=0就好了。

int res =0;
while(num !=0){
int temp = num%10;
res = res*10+temp;
num = num/10;
}

该问题没想到处理方法的地方在于不能超过int的取值范围。

看了题解后我的理解是如果结果超过了范围就会导致数值不准确,进而再判断也没有意义了,所以就要在超过边界值的前一位进行比较。

就是边界值是2147483647和-2147483648。如果到了这一位的数再进行比较,如果发生了溢出就无法再比较了,所以要对边界值/10,进行比较,也就是结果值比较214748364 这个数。之后再对余下的数进行判断,如果这时已经比214748364 大或比-214748364 小,那么这说明已经溢出了,直接返回0,如果相等则要继续比较后面的值,如果余下的数是正数并且大于7,说明相加后会溢出,返回0,如果是负数且小于-8,说明溢出,返回0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值