[牛客网-Leetcode] #数组 中等 plus-one

数字加一 plus-one

题目描述

给出用数字数组表示的一个非负整数,请对该整数加1。
Given a non-negative number represented as an array of digits, plus one to the number.

示例

示例1
输入

[1]

输出

[2]

示例2
输入

[1,2,3]

输出

[1,2,4]

解题思路

  • 实质上是大整数相加,设置进位标志carry,从低位开始遍历,每次如果出现进位,就修改当前位和进位标志carry。如果遍历完后仍有进位,就在高位补上进位。
class Solution {
    
    
public:
    vector<int> plusOne(vector<int>& digits) {
    
    
        int one(1), carry(0);  //待加整数和进位
        int size = (int)digits.size();
        //由于只需要加一次1,所以不用放在循环里,直接初始化时相加即可
        digits[size - 1] += one;
        for(int i = size - 1; i >= 0; i --) {
    
    
            digits[i] += carry;
            carry = digits[i] / 10;
            digits[i] %= 10;
        }
        //如果仍有进位,就在最高位之后补上进位
        if(carry) {
    
    
            digits.insert(digits.begin(), carry);
        }
        return digits;
    }
};

猜你喜欢

转载自blog.csdn.net/cys975900334/article/details/106613823