Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.
You may assume the integer do not contain any leading zero, except the number 0 itself.
The digits are stored such that the most significant digit is at the head of the list.
题目解析:
一个数值的每一位都分别放到一个一维向量中,最高位放在数组的开头位置,目的是给这个数值整体上加一。
以下代码参考leetcode上一位刷题的前辈的代码,比较简单易懂
class Solution {
public int[] plusOne(int[] digits) {
for(int i=digits.length-1;i>=0;i--){
if(digits[i]<9){
digits[i]+=1;
return digits;
}
digits[i]=0;
}
int[] result=new int[digits.length+1];
result[0]=1;
return result;
}
}
解题思路:
给整个数值加一也就是输在数字的末位加一,即给数组的最后一个加一即可
需要考虑到的是如果末尾数值是9,那么需要进位,即末尾置零,然后倒数第二位加一
如果每一位都是9,则需要重新再数值的首位前面加一位1.
故从末尾开始首先判断个位是否为9,若不是,则直接加一return数组即可;若是,则该位置零,继续循环看十位;若循环到首位一直是9,则首位类似于之前同样置零,new一个n+1位的数组,令首位的数值为1即可,因为java中新建一个数组相当于全部数值的初始化数值为0.