-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlusOne.java
98 lines (77 loc) · 2.44 KB
/
PlusOne.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Given a non-empty array of decimal digits representing a non-negative integer, increment one to the integer.
The digits are stored such that the most significant digit is at the head of the list, and each element in the array contains a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.
Example 1:
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Example 2:
Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Example 3:
Input: digits = [0]
Output: [1]
Constraints:
1 <= digits.length <= 100
0 <= digits[i] <= 9
Runtime: 0 ms, faster than 100.00% of Java online submissions for Plus One.
Memory Usage: 37.2 MB, less than 97.20% of Java online submissions for Plus One.
class Solution {
public int[] plusOne(int[] digits)
{
//printArray(addOne(digits));
return addOne(digits);
}
public int[] addOne(int[] digits)
{
if(digits.length == 1)
{
if(digits[0] < 9)
{
digits[0] = digits[0]+1;
return digits;
}
else
{
int[] newNumber = new int[digits.length+1];
int sum = digits[0]+1;
newNumber[1] = sum%10;
newNumber[0] = sum/10;
return newNumber;
}
}
int carry = 1;
int index = digits.length-1;
while(carry > 0)
{
int sum = digits[index] + carry;
int digit = sum%10;
carry = sum/10;
digits[index] = digit;
index--;
if(index == 0 && carry == 1 && digits[index] < 9)
{
digits[index] = digits[index] + carry;
return digits;
}
else if(index == 0 && carry == 1 && digits[index] == 9)
{
int[] newNumber = new int[digits.length+1];
newNumber[0] = carry;
newNumber[1] = digit;
for(int i = 2; i < digits.length; i++)
{
newNumber[i] = digits[i-1];
}
return newNumber;
}
}
return digits;
}
public void printArray(int[] digits)
{
for(int i = 0; i < digits.length; i++)
System.out.print(digits[i] + "");
}
}