Leetcode 66: Plus One

Question:

Given a non-negative number represented as an array of digits, plus one to the number.

The digits are stored such that the most significant digit is at the head of the list.

Subscribe to see which companies asked this question

博主工作了5个月,最近才又跑回来继续刷题,希望接下来能找到一份心仪的工作~

题目解析:

简单的一道对Array进行操作的题。重点是如何维护最后一位的进位问题。例如,给出的array是[9, 9, 9]的话,返回的结果是[1, 0, 0, 0]。

利用了一个flag来维护进位,等for循环结束的时候如果flag为1,那么最后一位需要被维护,也就新建一个数组,长度为原数组+1,把所有的值都存进去就行了。

 1 public int[] plusOne(int[] digits) {
 2         int flag = 1;
 3         for(int i = digits.length - 1; i >= 0; i--){
 4             digits[i] += flag;
 5             if(digits[i] == 10){
 6                 digits[i] = 0;
 7                 flag = 1;
 8             }
 9             else if(digits[i] < 10){
10                 flag = 0;
11             }
12         }
13         
14         if(flag == 1){
15             int[] newdigits = new int[digits.length + 1];
16             newdigits[0] = 1;
17             for(int i = 0; i < digits.length; i++){
18                 newdigits[i + 1] = digits[i];
19             }
20             return newdigits;
21             
22         }else{
23             return digits;
24         }
25         
26     }
原文地址:https://www.cnblogs.com/sherry900105/p/4929141.html