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.
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
<code>public</code> <code>class</code> <code>Solution {</code>
<code> </code><code>/**very fundamental problem.<br></code>
<code> </code><code>* @author Averill Zheng</code>
<code> </code><code>* @version 2014-06-05</code>
<code> </code><code>* @since JDK 1.7</code>
<code> </code><code>*/</code>
<code> </code><code>public</code>
<code>int</code><code>[] plusOne(</code><code>int</code><code>[] digits) {</code>
<code> </code><code>int</code>
<code>length = digits.length;</code>
<code> </code><code>int</code><code>[] result =</code><code>null</code><code>;</code>
<code> </code><code>if</code><code>(length ></code><code>0</code><code>){</code>
<code> </code><code>int</code><code>[] temp =</code><code>new</code>
<code>int</code><code>[length +</code><code>1</code><code>];</code>
<code> </code><code>int</code>
<code>carry =</code><code>1</code><code>;</code>
<code> </code><code>for</code><code>(</code><code>int</code>
<code>i = length -</code><code>1</code><code>; i > -</code><code>1</code><code>; --i){</code>
<code> </code><code>int</code>
<code>sum = digits[i] + carry;</code>
<code> </code><code>carry = sum /</code><code>10</code><code>;</code>
<code> </code><code>temp[i +</code><code>1</code><code>] = sum %</code><code>10</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>if</code><code>(carry !=</code><code>0</code><code>)</code>
<code> </code><code>temp[</code><code>0</code><code>] =</code><code>1</code><code>;</code>
<code> </code><code>if</code><code>(temp[</code><code>0</code><code>] !=</code><code>0</code><code>)</code>
<code> </code><code>result = temp;</code>
<code> </code><code>else</code><code>{</code>
<code> </code><code>result =</code><code>new</code>
<code>int</code><code>[length];</code>
<code> </code><code>for</code><code>(</code><code>int</code>
<code>i =</code><code>1</code><code>; i < length +</code><code>1</code><code>; ++i)</code>
<code> </code><code>result[i -</code><code>1</code><code>] = temp[i];</code>
<code> </code><code>} </code>
<code> </code><code>}</code>
<code> </code><code>return</code>
<code>result; </code>
<code> </code><code>}</code>
<code>}</code>