File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
1
+ # 66. Plus One
2
+
3
+ ## #1 翻转数组+进位相加[ AC]
4
+
5
+ ### 思路
6
+
7
+ 该题用数组这种结构来表示整数,整数的最低位是反而是数组下标的最高位` length-1 ` ,整数的最高位是数组下标的最低位` 0 ` 。这样处理起来可能会比较麻烦,我们可以先对数组进行翻转,使得数组的低位对应整数表示的低位,数组的高位对应整数表示的高位,然后进行进位相加。最后,在返回结果前,对结果数组进行翻转。
8
+
9
+ ### 算法
10
+
11
+ ``` java
12
+ class Solution {
13
+ public int [] plusOne (int [] digits ) {
14
+ if (digits == null || digits. length == 0 )
15
+ return new int [0 ];
16
+ // first bit
17
+ reverse(digits);
18
+ int sum = digits[0 ] + 1 ;
19
+ digits[0 ] = sum % 10 ;
20
+ int carry = sum / 10 ;
21
+ for (int i= 1 ; i< digits. length; i++ ){
22
+ if (carry == 0 )
23
+ break ;
24
+ sum = digits[i] + carry;
25
+ digits[i] = sum % 10 ;
26
+ carry = sum / 10 ;
27
+ }
28
+ if (carry == 0 ){
29
+ reverse(digits);
30
+ return digits;
31
+ }
32
+ int [] res = new int [digits. length + 1 ];
33
+ for (int i= 0 ; i< digits. length; i++ )
34
+ res[i] = digits[i];
35
+ res[digits. length] = carry;
36
+ reverse(res);
37
+ return res;
38
+ }
39
+
40
+ public void reverse (int [] nums ){
41
+ for (int i= 0 ,j= nums. length- 1 ; i< j; i++ ,j-- ){
42
+ int temp = nums[i];
43
+ nums[i] = nums[j];
44
+ nums[j] = temp;
45
+ }
46
+
47
+ }
48
+ }
49
+ ```
50
+
51
+ ### 复杂度分析:
52
+
53
+ - 时间复杂度:$O(n)$
54
+ - 空间复杂度:$O(1)$
55
+
You can’t perform that action at this time.
0 commit comments