package main
import "fmt"
//设计算法:
//99->1,0,0 999->1,0,0,0
//从后往前遍历数组,如果末尾的数字为9,赋值为0,负责++
//如果首端的数字为0,插入[]int{1}至最前端
func plusOne(digits []int) []int {
n := len(digits)
for i := n - 1; i >= 0; i--{
if digits[i] == 9 {
digits[i] = 0
} else {
digits[i]++
return digits
}
}
fmt.Println(digits)
if digits[0] == 0 {
digits = append([]int{1}, digits...)
}
fmt.Println(digits)
return digits
}
//方法2:
//直接对每个索引上的数字进行处理
//如果最后一位为9,9+1后为10,通过10%10=0重新赋值给这个数
//然后进行n-1位数处理,重复上一步骤
func plusOne2(digits []int) []int {
n := len(digits)
index := 1
for i := n - 1; i >= 0; i--{
sum := digits[i] + index //确定每一位数字的值
value := sum % 10 //逢10归0,负责保持原数字
index = sum / 10 //如果大于等于10,则为1;否则为0
digits[i] = value
}
if index == 1 { //说明数组最前端是个10,但是1未放入数组
digits = append([]int{1},digits...)
}
return digits
}
func main() {
d := []int{9,9}
fmt.Println(plusOne2(d))
}
golang_算法: leetcode_数组07-加一
最新推荐文章于 2023-07-17 10:40:57 发布
本文详细探讨了如何使用Golang解决LeetCode中的数组问题——加一。通过对数组元素进行遍历和处理,实现了在不创建新数组的情况下将数组中的数字加一。文章深入讲解了算法思路和代码实现,适合Golang初学者和算法爱好者学习。

721

被折叠的 条评论
为什么被折叠?



