Plus One

Description:

Given a non-negative number represented as an array of digits, plus one to the number.
he digits are stored such that the most significant digit is at the head of the list.

问题描述:

给一个数组表示的非负数,数的最高位在数组的头部,给这个数进行+1操作,返回新数表示的数组。

Ex:

Given: [1 2 3] , [1 2 9] [9 9 9 ]
Output: [1 2 4] [1 3 0] [1 0 0 0]

解法一:

思路:

正如在例子中给的那样需要处理三种情况,最后一种情况比较特殊,数组的长度改变了。
所以先拿到数组的长度,从最后的元素开始遍历,如果小于9就加1,然后return 返回。否则就将该位置为0 ,再次进行if循环同样道理返回。对于第三种测试用例,先建长度为n+1的数组,并且将数组的第一位设为1,返回这个新数组。

Code:

public class Solution {
    public int[] plusOne(int[] digits) {
        int n = digits.length;
        for(int i = n-1; i >= 0; i--){
            if(digits[i] < 9){
                digits[i]++;
                return digits;
            }
            digits[i] = 0;
        }

        int[] newNumber = new int [n+1];
        newNumber[0] = 1;

        return newNumber;
    }
}

Trick:

这里对于第三种情况的有个小trick,即对于未显示赋值的部分,默认赋值为0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值