2021.09.19 - 056.加一

文章目录

1. 题目

2021.09.19 - 056.加一

2. 思路

(1) 数学法

  • 首先创建一个比原数组长1的新数组,最高位设为0,后面的元素与原数组相同,方便进位,然后从后向前遍历,若元素为9,则进位设为0,若元素不为9,则加1直接跳出循环。
  • 最后判断最高位是否为0,若为0则去掉最高位返回即可。

(2) 数学法优化

  • 与(1)的思想基本相同,若最高位进位,则结果必定为10……00,因此可以直接创建一个新数组,最高位设为0即可。

3. 代码

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
    }
}

class Solution {
    public int[] plusOne(int[] digits) {
        int[] res = new int[digits.length + 1];
        res[0] = 0;
        for (int i = 1; i < res.length; i++) {
            res[i] = digits[i - 1];
        }
        for (int i = res.length - 1; i >= 0; i--) {
            if (res[i] == 9) {
                res[i] = 0;
            } else {
                res[i]++;
                break;
            }
        }
        if (res[0] == 0) {
            return Arrays.copyOfRange(res, 1, res.length);
        } else {
            return res;
        }
    }
}

class Solution1 {
    public int[] plusOne(int[] digits) {
        for (int i = digits.length - 1; i >= 0; i--) {
            if (digits[i] == 9) {
                digits[i] = 0;
            } else {
                digits[i]++;
                return digits;
            }
        }
        digits = new int[digits.length + 1];
        digits[0] = 1;
        return digits;
    }
}
上一篇:javascript – ExecJS :: ProgramError:意外的令牌punc«(»,预期的punc«:»运行rake资产时:生产时预编译


下一篇:python 用execjs执行js代码