Leetcode 第66题:Plus One--加一(C++)

题目地址:Plus One


题目简介:

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

假设除了整数 0 之外,这个整数不会以零开头。

示例 1:  输入: [1,2,3]  输出: [1,2,4]  解释: 输入数组表示数字 123。
示例 2:  输入: [4,3,2,1]  输出: [4,3,2,2]  解释: 输入数组表示数字 4321。

题目解析:

1、简单暴力:

从尾部开始更新数字,只要有进位就更新数字,当没有进位时结束更新。在所有的数字都遍历完成后,需要增加一个数字1。

C++版:

class Solution {
public:
    vector plusOne(vector& digits) {
        int len = digits.size(), carry = 1;
        for(int i = len - 1; i >= 0; i--)
        {
            if (carry)
            {
                digits[i] = (digits[i] + carry) % 10;
                carry = digits[i] == 0 ? 1 : 0;
            }
            else
                break;
        }
        if (carry)
            digits.insert(digits.begin(), 1);
        return digits;
    }
};
static auto _=[](){ios::sync_with_stdio(false);return 0;}();

Python版:

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        length = len(digits)
        carry = 1
        i = length - 1
        while(i >= 0):
            if carry == 1:
                digits[i] = (digits[i] + carry) % 10
                if digits[i] != 0:
                    carry = 0
                i -= 1
            else:
                break
        if carry == 1:
            digits.insert(0, 1)
        return digits

 

你可能感兴趣的:(leetcode)