LeetCode-探索-初级算法-数组-7. 加一(个人做题记录,不是习题讲解)
程序员文章站
2024-03-23 16:54:46
...
LeetCode-探索-初级算法-数组-7. 加一(个人做题记录,不是习题讲解)
-
语言:java
-
思路:先判断尾部是否进位,如果进位,则进入一个循环判断;如果不仅为直接末尾数字+1;最后如果连第一个数字也进位,创建的数组就要len+1
-
代码(0ms):
class Solution { public int[] plusOne(int[] digits) { int len = digits.length; boolean CF = false; if(digits[len-1]==9){ CF = true; digits[len-1] = 0; for(int i = len-2;i>=0;--i){ if(digits[i]==9){ CF = true; digits[i] = 0; }else{ digits[i] += 1; CF = false; break; } } }else{ digits[len-1] += 1; } int[] res = null; if(CF){ res = new int[len+1]; res[0] = 1; for(int i =0;i<len;++i){ res[i+1] = digits[i]; } }else{ res = new int[len]; for(int i =0;i<len;++i){ res[i] = digits[i]; } } return res; } }
-
参考代码(0ms):思路和我一样,不过if判断比较少,多了几次运算;最后返回数组也比我简练,我等于另一种情况多创建了一次数组,且利用了新建数组默认赋值0的特性。
class Solution { public int[] plusOne(int[] digits) { int carry=1; int num=0; for(int i=digits.length-1;i>=0;i--){ num=digits[i]+carry; digits[i]=num%10; carry=num/10; if(carry==0){ break; } } if(carry==1){ int[] arr=new int[digits.length+1]; arr[0]=1; return arr; }else{ return digits; } } }
-
参考后重写(0ms):
class Solution { public int[] plusOne(int[] digits) { int CF = 1; int len = digits.length; for(int i = len-1; i >= 0; --i){ if(CF>0){ digits[i] += CF; CF = digits[i]/10; digits[i] = digits[i]%10; } else break; } if(CF>0){ int[] res = new int[len+1]; res[0] = 1; return res; }else{ return digits; } } }
上一篇: 2020-02-02
下一篇: 单链表的创建、增删改查