leetcode Plus One
发布日期:2025-04-05 01:32:36 浏览次数:8 分类:精选文章

本文共 1964 字,大约阅读时间需要 6 分钟。

在解决这个问题时,我们需要将一个非负的数字,表示为数组形式,并给其加一。数组中的每个元素代表该数位的数字,可能出现的数组并不完全标准,所以我们需要进行额外的处理,确保每个元素都是一个单独的0到9的数字。加一操作后,可能需要处理进位,包括最高位进位时需要在数组前面插入一个新元素。以下是详细的解决方案和代码实现。

问题描述

给出的数字是一个数组,其中每个元素代表数位的一个数字。例如,数字100会被表示为[1,0,0]。我们的任务是对这个数进行加一运算,返回最终的数组形式。需要注意的是,数组可能并不标准,可能包含大于等于10的数字,我们需要先将其标准化。

解决思路

解决这个问题需要以下几个步骤:

  • 初始化变量:用于处理进位和数位。
  • 从最后一位开始加一:将数字的最后一位加一。
  • 从右向左处理每个数位:检查是否需要进位。如果某位超过9,进行进位处理,将其设为0,并将进位继续传递到高位。
  • 处理最高位进位:如果在处理过程中发现最高位需要进位,则需要在数组的前面插入一个新的元素。
  • 代码实现

    以下是C++代码实现:

    #include 
    using namespace std;class Solution {public: vector
    plusOne(vector
    & digits) { int s = digits.size(); int n = 0, j = 0, r = 0; if (s == 0) { digits.push_back(1); return digits; } // 从最后一位开始加一 digits[s - 1] += 1; for (int i = s - 1; i >= 0; i--) { if (digits[i] >= 10) { n = digits[i]; digits[i] = 0; j = i; while (n != 0) { r = n % 10; if (j > 0) { digits[j] += r; j--; } else { digits.insert(digits.begin(), r); } n /= 10; } } } return digits; }};

    代码解释

    • 初始化变量njr用于处理进位和当前数字部分。
    • 从最后一位开始加一:将数字的最后一位加一,开始加一操作。
    • 从右向左处理每个数位:遍历数组从最后一个元素到第一个元素,检查是否需要进位。
    • 进位处理:如果当前数位大于等于10,进行进位,此时将当前数位设为0,并将进位值传递到前一个数位。
    • 处理最高位进位:如果在最高位处理完毕后仍有进位,需要在数组的前面插入一个新的数字,表示最高位的加一。

    测试与边界条件

    以下是一些测试用例,验证代码的正确性:

  • 数字为10:加一后的数组形式应该是[1, 1]。具体步骤:

    • 最后一位加一,得到[1, 10]。
    • 处理第二位(下标为1):10 >=10,设为0,传递进位。
    • 传递到第一位(下标为0):1 +1=2。
    • 最终数组为[2, 0]。
  • 数字为999:加一后的数组形式应为[1, 0, 0, 0]。具体步骤:

    • 最后一位加一,得到[9,9,10]。
    • 处理第三位(下标2):10 >=10,设为0,传递进位。
    • 传递到第二位(下标1):9 +10 =19 >=10,设为0,传递进位。
    • 继续处理第一位下标0: 9 +1=10 >=10,设为0,传递进位。
    • 由于没有更多的位置可处理,现在传递进位到第一位位置:插入1在前面,形成[1, 0, 0, 0]。
  • 数字为0:加一后的数组形式应为[1]。具体步骤:

    • 数组为空,添加0,然后加一得到1。
  • 代码处理了所有这些情况,确保了加一操作的正确性。

    通过以上的分析和代码实现,我们成功解决了将数组表示的数字加一的问题,并确保了代码的正确性和完整性。

    上一篇:LeetCode shell 题解(全)
    下一篇:LeetCode Palindrome Number

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年04月15日 18时33分12秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章