66. Plus One —— Java
阿新 • • 發佈:2019-01-08
Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.
You may assume the integer do not contain any leading zero, except the number 0 itself.
The digits are stored such that the most significant digit is at the head of the list.
PS:題中假定陣列不為空,並且所有的數字都是非負數。
加一是指,將最後一位加1,
eg: input:[9,9] 99 + 1 = 100 return [1,0,0]
假定所有數字都是隻有一位數。
System.arraycopy(Object src, int src_position, Object dest, int dest_position, int length);class Solution { public int[] plusOne(int[] digits) { int count = 0; if(digits[digits.length-1]%10 == 9){ count = 1; digits[digits.length-1] = 0; }else{ count = 0; digits[digits.length-1] += 1; } for(int i=digits.length-2;i>=0;i--){ if(count == 1){ if(digits[i] % 10 == 9){ digits[i] = 0; } else{ digits[i] += 1; count = 0; } } } if(count == 1){ int[] newD = new int[digits.length+1]; newD[0] = 1; System.arraycopy(digits,0,newD,1,digits.length); return newD; } return digits; } }
上述是陣列複製,其中:
src: 源陣列
src_position: 從源陣列中的哪個位置開始複製
dest: 目標陣列
dest_position: 從目標陣列中的哪個位置開始複製
length: 複製長度(在src長度以內)
Example:
int[] src = [1,2,3,4,5];
int[] dest = new int[7];
System.arraycopy(src, 0, dest, 2, 4);
最後dest的陣列為 [0,0,1,2,3,4,0]