leetcode66 加一

题目大意

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

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

解题思路

从后往前遍历数组,如果该位置等于10,则表示需要进1,因此将当前位置置为0,并用变量flag记录进位信息。

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int index = digits.size() - 1, flag = 1;
        for (;index >= 0; --index){
        	digits[index] += flag;
        	if (digits[index] == 10){
        		flag = 1;
        		digits[index] = 0;
        	}
        	else
        		flag = 0;
        }
        if (flag == 1)
        	digits.insert(digits.begin(), 1);
        return digits;
    }
};

你可能感兴趣的:(leetcode算法题解)