1. 题目

Given a non-negative number represented as an array of digits, plus one to the number.

The digits are stored such that the most significant digit is at the head of the list.

翻译:
对一个用数字列表表示的数,进行加一操作,返回同样的数字列表形式。
2471表示形式为[2,4,7,1]的数组。

2. 思路

从低到高相加进位。

也可以直接从末尾向前遍历所有的99..9形式的串,找到第一个非9得地方,进行加一。后续的全部置0.

3. 代码

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        vector<int> ret;
        if (digits.size() == 0) { ret.push_back(0); return ret;}
        int add = 1;
        for (int i = digits.size()-1; i >= 0; i--) {
            int s = digits[i] + add;
            if (s > 9) {
                add = 1;
                s -= 10;
            } else {
                add = 0;
            }
            ret.push_back(s);
        }
        if (add > 0) {
            ret.push_back(add);
        }
        reverse(ret.begin(), ret.end());
        return ret;
    }
};

knzeus
72 声望28 粉丝

行万里路,读万卷书