leetcode 66 加一 c++

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

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

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

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

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

思路:
这道题属于简单题,思路就是从最低位循环开始向前检查当前位是否小于9,如果小于9就直接令当前位加1,返回数组即可,如果等于9就令当前位为0继续向前检查直到到达最高位为止,如果循环结束还没有返回值则说明此时数组里全是9,此时我们就返回一个最高位为1其余全为0且位数比原数多1位的数组即可。

代码 :

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int n = digits.size() - 1;
        while(n >= 0){
            if(digits[n] < 9){
                digits[n] += 1;
                return digits;
            }
            digits[n--] = 0;
        }
        vector<int> ret(digits.size() + 1, 0);
            ret[0] = 1;
        return ret;
    }
};

你可能感兴趣的:(leetcode)