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的結果示姿。
比如
input [9,9,9,9]
return[1,0,0,0,0]
題目比較簡單逊笆,看到就很容易直接寫出來,比如我寫的是這樣:
public int[] plusOne(int[] digits) {
int mod = 0,carry = 1, sign = digits[0];
for (int i = digits.length-1; i >= 0; i--) {
int temp = digits[i]+carry;
mod = temp%10;
carry = temp/10;
digits[i] = mod;
}
if (carry == 0) {
return digits;
}else {
int temp[] = new int[digits.length+1];
temp[0] = carry;
for (int i = 1; i < temp.length; i++) {
temp[i] = digits[i-1];
}
return temp;
}
}
這么寫結果倒是沒什么問題子檀,也通過了所有的測試,不過看到別人的代碼才知道自己的代碼實在是拖泥帶水亩进。下面是別人家孩子的代碼缩歪。思路清晰,而且少了一次循環(huán)匪蝙。
public int[] plusOne(int[] digits) {
int length = digits.length - 1;
for (int i = length - 1; i >= 0; --i)
{
if (digits[i] == 9)
{
digits[i] = 0;
}
else
{
digits[i]++;
return digits;
}
}
int[] res = new int[digits.length + 1];
res[0] = 1;
return res;
}
寫出干凈的代碼是在需要多加練習逛球,清晰的思路是關鍵,繼續(xù)加油颤绕。