[LeetCode] 66. Plus Onejava

    xiaoxiao2021-03-25  105

    /**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这种,需要进位。其他则不需要。

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

    转载请注明原文地址: https://ju.6miu.com/read-9939.html

    最新回复(0)