🐦‍🔥初学者友好指南 'Plus One' – LeetCode 66 (C++ | Python | JavaScript)

发布: (2026年1月1日 GMT+8 13:56)
2 min read
原文: Dev.to

Source: Dev.to

Problem Description

给定一个数组 digits,它表示一个非负整数,其中每个元素都是单个数字,最高位在数组的开头。
数组 没有前导零,除非数字本身是 0

你的任务是给这个整数加一,并返回结果数组。

边界情况

  • 如果某位数字小于 9,直接将其加一即可,任务完成。
  • 如果某位数字是 9,它会变成 0,并向左侧的下一位进位 1
  • 如果所有位都是 9(例如 [9,9,9]),结果应是一个以 1 为首、后面跟零的新数组(例如 [1,0,0,0])。

C++ Solution

class Solution {
public:
    vector plusOne(vector& digits) {
        for (int i = digits.size() - 1; i >= 0; --i) {
            if (digits[i]  List[int]:
        for i in range(len(digits) - 1, -1, -1):
            if digits[i] = 0; i--) {
        if (digits[i] < 9) {
            digits[i]++;
            return digits;
        }
        digits[i] = 0;
    }
    // All digits were 9
    digits.unshift(1);
    return digits;
};

Key Points

  • 逆向遍历:从数组末尾开始遍历,以正确处理进位。
  • 提前返回:一旦找到小于 9 的数字,直接加一并返回——无需再进行后续处理。
  • 数组操作:在全为 9 的情况下,需要在前端插入一个元素(C++ 中使用 insert,JavaScript 中使用 unshift,Python 中使用列表拼接)。

这个问题展示了如何通过简单的逻辑来处理在许多语言中会导致溢出的“大整数”。关键在于正确地处理进位。

Back to Blog

相关文章

阅读更多 »

66. 加一

问题描述:给定一个用整数数组 digits 表示的大整数,其中每个 digits[i] 是该整数的第 i 位数字。数字是或……