Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This was my original solution.
- public int[] plusOne(int[] digits) {
- int j = digits.length-1;
- int res = digits[j]+1;
- int carryover = res/10;
- digits[j--] = res%10;
- while(j>=0){
- res = digits[j]+carryover;
- digits[j] = res%10;
- carryover = res/10;
- j--;
- }
- if (j<0 && carryover !=0){
- //create new array
- int[] nd = new int[digits.length+1];
- nd[0] =carryover;
- for(int i=1;i<nd.length; i++){
- nd[i] = digits[i-1];
- }
- return nd;
- }
- return digits;
- }
- //This can be simplified further as follows.
- public int[] plusOne(int[] digits) {
- for(int i=digits.length-1; i>=0; i--){
- if(digits[i]+1<=9){
- digits[i]++;
- return digits;
- }
- digits[i]=0;
- }
- // this case only occurs if the input array is like 9999
- int[] newarr = new int[digits.length()+1];
- newarr[0]=1;
- return newarr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement