Utopi
a

加一

Please remain simple

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数。 你可以假设除了整数 0 之外,这个整数不会以零开头。

Example

输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。

我的

func plusOne(_ digits: [Int]) -> [Int] { var realdigits = digits var i = realdigits.count-1 if i < 0{ return [] } if realdigits[i] != 9 { realdigits[i]+=1 }else{ while realdigits[i] >= 9 { realdigits[i] = 0 if i==0 { realdigits.insert(1, at: 0) break } i-=1 if realdigits[i] == 8 { realdigits[i]+=1 break } realdigits[i]+=1 } } return realdigits }

简直是Debug型编程啊真是糟糕透了,性能也一般,50%吧。

网上找了几个思路都和我都差不多,性能也一模一样。

4 ms

func plusOne(_ digits: [Int]) -> [Int] { if digits.count < 0 { return [] } var newDigits = digits for i in stride(from: digits.count - 1, through: 0, by: -1) { if newDigits[i] < 9 { newDigits[i] += 1 return newDigits } newDigits[i] = 0 } newDigits.insert(1, at:0) return newDigits } }

这个为啥这么快??和它应该一样思路的只有它的1/3,难道

for i in stride(from: digits.count - 1, through: 0, by: -1) {
.reversed
这么不一样吗?