LeedCode刷题:66:加一

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

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

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

思路:从最后一位看,若不为9,则加1直接返回

若为9,则本位设为0,继续遍历前一个数;

若跳出for循环,则说明数组中全设为了0;

则新建长度+1的新数组,并将第一个数设为1,最终返回这个新数组即可

 1 class Solution {
 2     public int[] plusOne(int[] digits) {
 3        for(int i=digits.length-1;i>=0;i--){
 4             if(digits[i]!=9){
 5                 digits[i]++;
 6                 return digits;
 7             }
 8             digits[i]=0;
 9         }
10         int tmp[]=new int[digits.length+1];
11         tmp[0]=1;
12         return tmp;
13     }
14 }

 C++代码:

 1 class Solution {
 2 public:
 3     vector<int> plusOne(vector<int>& digits) {
 4         digits[digits.size()-1]++;
 5         for(int i=digits.size()-1;i>=0;i--){
 6             if(digits[i]==10){
 7                 digits[i]=0;
 8                 if(i==0){
 9                     digits.insert(digits.begin(),1);
10                 }
11                 else{
12                     digits[i-1]++;
13                 }
14             }else
15                 return digits;
16         }
17         return digits;
18     }
19 };
原文地址:https://www.cnblogs.com/nilbook/p/13515390.html