66. 加一
发布: (2026年1月1日 GMT+8 21:01)
1 min read
原文: Dev.to
Source: Dev.to
问题描述
给定一个由整数数组 digits 表示的大整数,其中 digits[i] 是该整数的第 i 位数字。数字按从最高位到最低位(从左到右)的顺序排列。该整数不包含任何前导零。
任务: 将整数加一,并返回结果数组。
示例
| 输入 | 输出 | 说明 |
|---|---|---|
digits = [1,2,3] | [1,2,4] | 123 + 1 = 124 |
digits = [4,3,2,1] | [4,3,2,2] | 4321 + 1 = 4322 |
digits = [9] | [1,0] | 9 + 1 = 10 |
约束条件
1 = 0; $i--) {
解决方案(PHP)
<?php
function plusOne(array $digits): array {
$carry = 1;
for ($i = count($digits) - 1; $i >= 0; $i--) {
$sum = $digits[$i] + $carry;
$digits[$i] = $sum % 10;
$carry = intdiv($sum, 10);
if ($carry === 0) {
break; // no further propagation needed
}
}
if ($carry === 1) {
array_unshift($digits, 1);
}
return $digits;
}
// Test cases
print_r(plusOne([1, 2, 3])); // [1, 2, 4]
print_r(plusOne([4, 3, 2, 1])); // [4, 3, 2, 2]
print_r(plusOne([9])); // [1, 0]
?>