📑 题目:66. 加一

🚀 本题 LeetCode 传送门

题目大意

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

解题思路

  • 给出一个数组,代表一个十进制数,数组的 0 下标是十进制数的高位。要求计算这个十进制数加一以后的结果。
  • 简单的模拟题。从数组尾部开始往前扫,逐位进位即可。最高位如果还有进位需要在数组里面第 0 位再插入一个 1 。

代码

  1. package leetcode
  2. func plusOne(digits []int) []int {
  3. for i := len(digits) - 1; i >= 0; i-- {
  4. digits[i]++
  5. if digits[i] != 10 {
  6. // no carry
  7. return digits
  8. }
  9. // carry
  10. digits[i] = 0
  11. }
  12. // all carry
  13. digits[0] = 1
  14. digits = append(digits, 0)
  15. return digits
  16. }