加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
思路:设定一个进位(flag=0),当进位时,设为true,并把当前位设为0。当最高位产生进位时,需要新建一个数组,将最高位设为1,其余位置填入原数组值。
注意:当不产生进位时,当前位置数值+1后,应跳出循环
class Solution {
public int[] plusOne(int[] digits) {
int cur=0;
for(int i=digits.length-1;i>=0;i--) {
if(digits[i]<9)
{
digits[i] = digits[i]+1;
cur = 0;
break;
}
else {
digits[i] = 0;
cur = 1;
}
}
if(cur ==1) {
int[] result = new int[digits.length+1];
result[0] = 1;
for(int i=1;i<digits.length-1;i++) {
result[i]= digits[i];
}
return result;
}
else {
return digits;
}
}
}
运行之后竟然发现,运行时间为0ms,击败了100%的人,开心了好久。哈哈