LeetCode8

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

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/plus-one

解题思路:
题目说给我们的数组表示的是一个整数,然后要使这个整数+1,再返回加一后的整数,用数组表示。
加法是从个位开始加,所以我们遍历数组从最后一位开始遍历。我们需要注意的就是,当前元素是否为9,不为9时,只需要将原来的数加一,然后返回整个数组。 当为9时,当前元素的值变为0,并且要向前进一位。 还有种特殊情况,数组中所有的数字都是9,加一的数字要比原来多一位的,也就是说,返回的数组的长度要比原来数组长度多1。

数组元素全是9的情况这样处理:
定义一个新的数组,数组长度要比原来多1,另新数组的第一位元素值为1就行。剩下的元素默认值为0。妙啊!
代码实现:

		//从尾遍历数组
		for (int i = digits.length-1; i >=0; i++) {
     
            if(digits[i]!=9){
     //如果当前元素的值不为9,值+1,返回,不需要遍历剩下的元素了
                digits++;
                return digits;//直接返回变变化后的数组
            }else{
     //如果为9
                digits[i]=0;//值变为0
            }
        }
        //处理数组元素全是9的情况
        int []ans=new int[digits.length+1];
        ans[0]=1;
        return ans;

你可能感兴趣的:(LeetCode题解,leetcode,数据结构,java)