reoger的记录

--以后的你会感激现在那么努力的自己

0%

加一

66. 加一(Plus One)

题目难度: 简单

给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。

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

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

示例 1:

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

示例 2:

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

Solution

解题思路

就是大数相加的思想,将数组倒叙,加1大于9就进一位,最后的进位标志为1时,说明需要扩充数组。实现如下
Language: Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
   public int[] plusOne(int[] digits) {
         int len = digits.length;
       List<Integer> list = new ArrayList<Integer>();
       int temp =1;
       for(int i=len-1;i>=0;i--){
           int md = digits[i]+temp;
           if(md>9){
               temp =1;
               list.add(0,md-10);
          }else{
               temp = 0;
               list.add(0,md);
          }
      }
       if(temp ==1 ){
      list.add(0,1);
           len ++;
      }
       int res[] = new int[len];
       for(int i=0;i<list.size();i++){
      res[i] = list.get(i);
      }
       return res;
  }
}