Given a non-empty array of digits representing a non-negative integer, plus 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 contain a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.
Example 1:
Input: [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Example 2:
Input: [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
複製代碼
給定一個非空的數字數組,表示一個非負整數,加上1的整數次方。 這些數字的存儲方式是,最有效的數字位於列表的頂部,數組中的每一個元素都包含一個數字。 您能夠假設整數不包含任何前導零,除了數字0自己。 示例1: 輸入:(一、二、3) 輸出(一、二、4): 說明:數組表示整數123。 示例2: 輸入:[四、三、二、1) 輸出:[四、三、二、2] 說明:數組表示整數4321。git
本題是基於數組後面加1,通常沒有什麼問題,特別要注意一下若是進位是最大的怎麼辦,我這邊用了額外的數組來擴容這一步操做,同步賦值,若是有進位,則用新的數組。數組
按照咱們的思路來編輯,代碼以下bash
if (digits.length < 1) {
return digits;
}
int len = digits.length;
int[] result = new int[len];
int[] result1 = new int[len + 1];
int add = 1;
for (int i = len - 1; i >= 0; i--) {
int temp = add + digits[i];
add = temp / 10;
result[i] = temp % 10;
result1[i + 1] = result[i];
}
if (add != 0) {
result1[0] = add;
return result1;
}
return result;
複製代碼
時間複雜度: 該方案用了循環m因此f(n)=(n)=n;因此O(f(n))=O(n),即T(n)=O(n)ui
空間複雜度: 該方案使用了兩個額外數組,因此空間複雜度是O(2n+1)=O(n);spa
本題的大體解法如上所訴, 我是用了新的數組來替換原來的數組,固然也能夠在原來的數組上修改,這樣空間會更加小一點。翻譯