LeetCode66. 加一


用一个数组记录各个位数的变化,通过低位+1,观察各个位数的变化。
注意一下如果最高位因为进位导致多了一位,需要将进位(只可能是1 push_back()进数组)

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        reverse(digits.begin(), digits.end());            //由于push_back()只能将数加在后面,因此要先翻转数组
        int carry = 1;                                    //carry表示进位,初始为1,因为题目要我们加一
        for(auto& digit : digits) {                       //从低位到高位确定每一位的数字
            carry += digit;
            digit = carry % 10;
            carry /= 10;
        }
        if(carry == 1) {                                  //如果到了最高位还是有进位,需要将进位1压入数组
            digits.push_back(carry);
        }
        reverse(digits.begin(), digits.end());            //再翻转回来
        return digits;
    }
};
posted @ 2020-06-29 22:34  machine_gun_lin  阅读(142)  评论(0编辑  收藏  举报