继续打卡算法题,今天学习的是LeetCode第66题加一,这道题目是道简单题
。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些提升。
分析一波题目
这个题目是简单题,一个数字加一本来是件容易的事情,当时数字使用数组表示,然后再加一且用数组返回,这样就提升了一点难度。
其实数字加一,主要是进位的情况需要考虑清楚。
如果一个数里没有9,这种情况非常简单,只要将个位加一就行。
如果一个数里都是9,这种情况,数会增加一位,第一位数字是1,并且其他位是0。
如果一个数里是以9结尾的,不管是多少个9,那么非9的最后一个数字加1,其他位是0。
哈哈,捋一捋,关键这几个情况就清晰了,下面可以开始写代码了。
本题解题技巧
1、分析每种需要加1,并且需要进位处理的情况,本题就可以解决了。
编码解决
class Solution {
public int[] plusOne(int[] digits) {
for(int i=digits.length-1; i>=0; i--) {
//遇到部分9结尾,或者不是9结尾的情况
if(digits[i] != 9) {
digits[i] = digits[i] +1;
for(int j=i+1; j<digits.length; j++) {
digits[j] = 0;
}
return digits;
}
}
//都是9的情况
int[] result = new int[digits.length+1];
result[0] = 1;
return result;
}
}
总结
1、简单题目,分析题目,找出规律,最后解题思路确实是比较简单的。
2、遇到题目,都可以先使用穷举或者举例推导,查找规律。