【leetcode】66. Plus One 用单个数字列表表示的数进行加一返回同样的数字列表形式

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
    原文地址: https://segmentfault.com/a/1190000007381714
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞