1、给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
注:首先想到的解决办法是将数组转化成int类型进行加1运算,但是此方法存在越界限制,操作系统为64和32位操作系统,int类型数字有可能超限,此方法放弃
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/plus-one
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法一:(逆序)先将数组元素取反,然后从最低进行判断,若判断位置为不为9时,该位加1;为9时此位数置0,并对下一位进行判断
def plusOne(self, digits: [int]) -> [int]: digits1 = list(reversed(digits)) for i in range(0,len(digits1),1): if digits1[i] != 9: digits1[i] += 1 print(i) return list(reversed(digits1)) digits1[i] = 0 digits1[len(digits1)-1]=0 digits1.append(1) return list(reversed(digits1))
方法二:(借鉴LeetCode)
- 遍历
digits
,判断每位是否为9
,若不是则+1
并返回,否则将此位置0
; - 对于
digits
里全为9
的情况,需要扩展list,并将首位置为1
。
class Solution: def plusOne(self, digits: [int]) -> [int]: for i in range(len(digits) - 1,-1,-1): if digits[i] != 9: digits[i] += 1 return digits digits[i] = 0 digits[0] = 1 digits.append(0) return digits