给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。
代码v1.0
从数字进制的角度来分析,首位进位的唯一情况就是后位全是9,只要后面位有一位加1不进位,就不会轮到首位,循环就可以跳出。
注意 list 加元素的区别,分别是 insert append extend +
http://smilejay.com/2013/02/add-items-to-a-list-in-python/
class Solution(object): def plusOne(self, digits): """ :type digits: List[int] :rtype: List[int] """ i=len(digits)-1 while i>=0 : if digits[i]+1<10: digits[i]+=1 return digits else: digits[i]=0 if(i==0): digits.insert(0,1) return digits i-=1
代码 v2.0
在python中,字符即list,可以把list转换成数字,然后再把数字转换成字符,最后再转回list
range(start, [stop], step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
class Solution: def plusOne(self, digits): """ :type digits: List[int] :rtype: List[int] """ #数组转换成数字 intNum=0 for i in range(len(digits)): intNum=intNum*10+digits[i] intNum+=1 #数字转换成字符 strNum=str(intNum) #字符转换成数组 res=[] for i in range(len(strNum)): res.append(int(strNum[i])) return res