加一 -- LeetCode -- 10.21

加一

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

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

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

 

示例 1:

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

示例 2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。

示例 3:

输入:digits = [0]
输出:[1]

思路:
  从后往前搜,直到找到不是 9 的数字,然后将该数字加 1;

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int k = digits.size() - 1;
        while(k >= 0 && digits[k] == 9){//注意两个判断顺序不能换!!
            digits[k] = 0;//若是 9 的话加一就变成 0 了
            k--;//往前找一位
        }
        if(k == -1){//k 为 -1 代表着 数组一直到第 0 位 都是 9 
            vector<int> a;
            a.push_back(1);
            for(int i = 0; i < digits.size(); i++){
                a.push_back(0);
            }
            return a;
        }else{
            digits[k]++;
        } 
        return digits;
    }
};

  

posted @ 2021-10-21 20:35  荣荣荣荣荣荣  阅读(44)  评论(0)    收藏  举报