LeetCode学习笔记2

LeetCode笔记2

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

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

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

示例 1:

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

示例 2:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/plus-one
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码

    public int[] plusOne(int[] digits) {
        int index  = digits.length -1;
        int count = ++digits[digits.length-1];//10
            while (count == 10){
                digits[index--]=0;
                if(index == -1 && count ==10){
                    int arr[] = new int[digits.length+1];
                    arr[0] = 1;
                    System.arraycopy(digits,0,arr,1,digits.length);
                    return  arr;
                }
                count = ++digits[index];
            }
        return  digits;
    }

思路:

  1. index => 记录位置 count => 记录当前位置的值。数组无论如何,最后一位肯定是加一的,所以一开始我就令最后一位加一 并赋值给count进行while循环如果count == 10 则进入第二步while内部;否则直接返回数组(最后一位已经+1)
  2. 因为当前位置已经为10,则我们直接把当前位置赋值为0,然后index-- 也就是指向当前位置前一位,count也相应的+1(index这个位置的元素值);
  3. if循环里面 => 判断index 是否 为 -1 也就是例如像[9,9,9]这种数组,代码执行到后面肯定是-1 (越界), 这时候我们的解决方法就算 新建一个数组,长度为 输入的数组长度+1 , 并且令第一个元素为1 即可。
  4. 在这里插入图片描述
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值