[LeetCode] 66. Plus One java

来源:互联网 发布:养女方知世道险 编辑:程序博客网 时间:2024/05/29 19:04
    /**66. Plus One     * @param digits     * @return  模拟大数+1     */    public int[] plusOne(int[] digits) {        int one = 1;        int i;        for(i = digits.length-1; i >= 0; i--) {            int sum = digits[i] + one;            if (sum > 9) {                digits[i] = sum-10;                one = sum/10;            }else {                digits[i] = sum;                one = 0;            }        }        if (i == -1 && one == 1) {            int[] nums = new int[digits.length+1];            for(int j = nums.length-1; j > 0; j--) {                nums[j] = digits[j-1];            }            nums[0] = one;            return nums;        }        return digits;    }    //处理个位、十位数    //新建一个数组赋值时注意下边范围,-1

先对原数组进行处理。从数组最后一位开始往前检查,如果当前数字是<9的,说明你加1无需进位,从循环跳出即可,如果当前数字等于9,说明加1涉及进位,且加1后当前数字应记为0,继续循环处理。

当对原数组处理完后,还需要判断当前第0位是不是已经变为0了,如果已经变为0了说明是类似99+1这种,需要进位。其他则不需要。

一般对数字进行操作的题都要考虑边界,尤其是溢出问题。

0 0
原创粉丝点击