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]
?>
Back to Blog

相关文章

阅读更多 »

每周挑战:新年,新挑战

新年快乐,大家。每周,Mohammad S. Anwar 会发布 The Weekly Challenge https://theweeklychallenge.org/,这是一个让我们所有人提出解决方案的机会……