当前位置:   article > 正文

加一算法解析_+1算法是什么

+1算法是什么
  1. package test.java.first;
  2. import org.junit.Test;
  3. import java.util.Stack;
  4. import java.util.concurrent.BlockingDeque;
  5. import java.util.concurrent.LinkedBlockingDeque;
  6. /**
  7. * 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
  8. *
  9. * 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
  10. *
  11. * 你可以假设除了整数 0 之外,这个整数不会以零开头。
  12. *
  13. * 示例 1:
  14. *
  15. * 输入: [1,2,3]
  16. * 输出: [1,2,4]
  17. * 解释: 输入数组表示数字 123。
  18. * 示例 2:
  19. *
  20. * 输入: [4,3,2,1]
  21. * 输出: [4,3,2,2]
  22. * 解释: 输入数组表示数字 4321。
  23. *
  24. * 来源:力扣(LeetCode)
  25. * 链接:https://leetcode-cn.com/problems/plus-one
  26. */
  27. public class Second {
  28. @Test
  29. public void secondTest(){
  30. int[] digits=new int[]{9};
  31. long start=System.currentTimeMillis();
  32. plusOne(digits);
  33. System.out.println(System.currentTimeMillis()-start);
  34. }
  35. public int[] plusOne(int[] digits) {
  36. Stack stack=new Stack();
  37. BlockingDeque<Integer> deque=new LinkedBlockingDeque<>();
  38. for (int i = 0; i < digits.length; i++) {
  39. stack.push(digits[i]);
  40. }
  41. judge(stack,deque,true);
  42. int[] returnInts=new int[deque.size()];
  43. for (int i = 0; i < returnInts.length; i++) {
  44. returnInts[i]=deque.pop();
  45. }
  46. return returnInts;
  47. }
  48. public void judge(Stack<Integer> stack,BlockingDeque<Integer> deque,boolean plus){
  49. if (!stack.empty()){
  50. Integer intT=stack.pop();
  51. int temp=0;
  52. if (plus){
  53. temp=intT+1;
  54. }else {
  55. temp=intT;
  56. }
  57. if (temp>9){
  58. deque.push(0);
  59. if (stack.empty()){
  60. deque.push(1);
  61. }
  62. judge(stack,deque,true);
  63. }else {
  64. deque.push(temp);
  65. judge(stack,deque,false);
  66. }
  67. }
  68. }
  69. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/63435
推荐阅读
相关标签
  

闽ICP备14008679号