🐦🔥初学者友好指南 '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 中使用列表拼接)。
这个问题展示了如何通过简单的逻辑来处理在许多语言中会导致溢出的“大整数”。关键在于正确地处理进位。