首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

leetcode 66 | 加一

分析:这道题是不是看第一眼是不是就想把数组转化为整数,然后再用这个整数加1,再将这个结果转化为数组~那可就调入这道题的陷阱里了,这样做是不行的,因为这个整数可以很大,大的超过int的范围,甚至超过long的范围。所以我们应该换个角度思考。我们可以分情况讨论,第一,我们让数组的最后一个数加1,即个位加1,如果小于10,则说明不存在进位的问题。所以我们就可以直接返回digits数组;第二,个位加1之后,若大于等于10,说明存在进位问题,所以最后的结果数组的长度可能为digits的数组长度加1。我们可以定义一个数组result,长度为digits的长度+1,然后把digits数组copy一份到result[1]~result[digits.length],然后来处理进位的问题。那进位怎么处理呢?其实也很简单,因为个位加1后大于等于10,所以个位的数保留相加之和的个位,然后定义初始进位carry为1,从result[digits.length-1],即十位开始,当carry !=0时,就继续上前进位,本身保留与进位相加结果之和的个位即可,最后判断result[0],即第一位是否为0,若不为0,则直接返回result,若为0,则返回从索引1到索引digits.length的子串即可。

03
领券