LeetCode 66. 加一

题目描述

66. 加一

image-20230312173014312

思路分析

解法一:模拟进位(推荐)

核心思路

  • 从末尾开始加一,处理进位。
  • 若某位小于 9,则加一后直接返回。
  • 若全部为 9,则返回长度加一的新数组,首位为 1。


复杂度分析

  • 时间复杂度:O(n),其中 n 表示数组长度。
  • 空间复杂度:O(1),若需要新数组则为 O(n)。
class Solution {
    public int[] plusOne(int[] digits) {
        for (int i = digits.length - 1; i >= 0; i--) {
            if (digits[i] < 9) {
                digits[i]++;
                return digits;
            }
            digits[i] = 0;
        }

        int[] res = new int[digits.length + 1];
        res[0] = 1;
        return res;
    }
}
func plusOne(digits []int) []int {
	for i := len(digits) - 1; i >= 0; i-- {
		if digits[i] < 9 {
			digits[i]++
			return digits
		}
		digits[i] = 0
	}

	res := make([]int, len(digits)+1)
	res[0] = 1
	return res
}

相似题目

题目 难度 考察点
67. 二进制求和 简单 模拟进位
989. 数组形式的整数加法 简单 模拟进位
415. 字符串相加 简单 模拟进位
43. 字符串相乘 中等 高精度模拟
258. 各位相加 简单 数学/模拟
本文作者:
本文链接: https://hgnulb.github.io/blog/2022/06137859
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!