Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. // This was my original solution.
  2. public int[] plusOne(int[] digits) {
  3. int j = digits.length-1;
  4. int res = digits[j]+1;
  5. int carryover = res/10;
  6. digits[j--] = res%10;
  7. while(j>=0){
  8. res = digits[j]+carryover;
  9. digits[j] = res%10;
  10. carryover = res/10;
  11. j--;
  12. }
  13. if (j<0 && carryover !=0){
  14. //create new array
  15. int[] nd = new int[digits.length+1];
  16. nd[0] =carryover;
  17. for(int i=1;i<nd.length; i++){
  18. nd[i] = digits[i-1];
  19. }
  20. return nd;
  21. }
  22. return digits;
  23. }
  24.  
  25.  
  26. //This can be simplified further as follows.
  27. public int[] plusOne(int[] digits) {
  28. for(int i=digits.length-1; i>=0; i--){
  29. if(digits[i]+1<=9){
  30. digits[i]++;
  31. return digits;
  32. }
  33. digits[i]=0;
  34. }
  35. // this case only occurs if the input array is like 9999
  36. int[] newarr = new int[digits.length()+1];
  37. newarr[0]=1;
  38. return newarr;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement