题目:
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
思路:
1.这些数组都是从右向左遍历的,所以需要**- -**;
2.将会出现三种情况:
(1).整数不等于9时,则前一位数字加一;
(2).整数等于9时,则该数将会被赋予0,并前一位加一;
(3).整数都是9时,则需要放入一个新的数组里,第一位直接赋值为1.
代码如下:
class Solution {
public int[] plusOne(int[] digits) {
//首先从右向左遍历数组
for(int i=digits.length-1;i>=0;i--){
//如果整数不等与9的时候可以直接加一
if(digits[i]!=9){
digits[i]+=1;
break;
}else{
//如果整数等于9的时候,则需要赋予该数为0,并前一位加一
digits[i]=0;
//这是如果遇到都是9的情况
if(i==0){
//放进一个新数组
digits=new int[digits.length+1];
digits[0]=1;
}
}
}
return digits;
}
}
假设:
数组为[1,2,3],则输出[1,2,4]
数组为[1,2,9],则输出[1,3,0]
数组为[9,9,9],则输出[1,0,0,0]
大家有什么好的题解,欢迎来到评论区评论~
原题来源于力扣