1. 题目描述
2. 解题思路
终于久违做到一题真正的简单题了!!!这题是真的简单,第一反应是想着把整型数组转成整型,加一后再转回去整型数组,后来感觉这种思路过于麻烦,况且整型也不支持这么大的数据,就放弃了这个想法。
第二个想法是把数组逐位来搞,唯一的是判断是否要进位,因此从数组尾部开始往前循环判断,若某一位加一后不需要进位就可以直接返回了,否则继续,若全部循环完之后还没有返回数组,意味着全部都要进位,例如 [9,9,9] 这种情况,那么只需要new一个新数组首位赋个1就可以返回了,反正其他的也是默认为0。
3. 代码实现
3.1 逆序逐位判断
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--) {
if (digits[i] + 1 == 10) {
digits[i] = 0;
} else {
digits[i]++;
return digits;
}
}
int[] n = new int[digits.length + 1];
n[0] = 1;
return n;
}
这道题挺简单的,似乎没有什么一题多解,所以就没有对比啦。