给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。可以假设除了整数 0 之外,这个整数不会以零开头。
该题目来自力扣题库
示例

示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。

思路

重要是看数组数是9的情况,比如99,999之类,这样的话+1会进一,数组长度也会增加,变成100,1000;
设置循环从后往前看,判断当前数组的数字是9的情况。如果不是9,直接加1并且返回数组;如果是9的话让当前位直接变成0,接着循环判断9的情况。
如果是类似于{‘9’,‘9’,‘9’}这种情况,我们还要建立一个新数组,新数组的长度要比输入的数组长度大一位,且第一位是1,后面都是0.

代码设计
class Solution {
    public int[] plusOne(int[] digits) {
        int len=digits.length;
        for(int i=len-1;i>=0;i--){
            if(digits[i]==9){
                digits[i]=0;
            }else{
                digits[i]+=1;
                return digits;
            }
        }
            int[] new_digits=new int[digits.length+1];
            new_digits[0]=1;
            return new_digits;
    }
}
总结

我本来也想过这种方法,就是将这个整型数组转化成相应的数字,其次再进行加1运算,最后转成数组。不过来回转化有些麻烦,不过能写出来,但是我觉得没有上面写的这个方法好。

你可能感兴趣的:(IT)