- 数组
列表 -> 字符串 -> 整数 -> +1 -> 字符串 -> 列表
class Solution:
def plusOne(self, digits):
digit = int(''.join([str(m) for m in digits]))
result = [int(x) for x in str(digit + 1)]
return result
class Solution:
def plusOne(self, digits):
digit = int(''.join(map(str, digits)))
result = list(map(int, str(digit+1)))
return result
- 反向遍历。
- 当前位的数字如果小于9则加1,否则为0。
- 之后,如果当前位的数字不为0(证明没有进位),则返回。
- 否则,继续第二步。
- 如果所有位都为9,则在最前面插入1。
class Solution:
def plusOne(self, digits):
for i in range(len(digits)-1, -1, -1):
digits[i] = digits[i] + 1 if digits[i] < 9 else 0
if digits[i]: # bool(0) == False
return digits
digits.insert(0, 1)
return digits
Go
func plusOne(digits []int) []int {
for i := len(digits) - 1; i >= 0; i-- {
digits[i]++
if digits[i] != 10 {
return digits
}
digits[i] = 0
}
digits[0] = 1
digits = append(digits, 0)
return digits
}
Go
func plusOne(digits []int) []int {
l := len(digits)
if l < 1 {
return []int{1}
}
carry := 0
digits[l-1]++
for i := l - 1; i >= 0; i-- {
n := digits[i] + carry
digits[i], carry = n%10, n/10
}
if carry > 0 {
digits = append([]int{carry}, digits...)
}
return digits
}
# ~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1
class Solution:
def plusOne(self, digits):
for i in range(len(digits)):
if digits[~i] < 9:
digits[~i] += 1
return digits
digits[~i] = 0
# return [1] + [0] * len(digits)
digits.insert(0, 1)
return digits
from functools import reduce
class Solution:
def plusOne(self, digits):
nums = reduce(lambda x, y: x * 10 + y, digits) + 1
return [int(i) for i in str(nums)]
# 模拟reduce
class Solution:
def plusOne(self, digits):
num = 0
for i in range(len(digits)):
num = num*10 + digits[i]
return [int(i) for i in str(num + 1)]