加一

作者: 面向全麦面包编程 | 来源:发表于2020-07-15 16:14 被阅读0次

    66. 加一

    直接上代码

        //时间复杂度是O(N),空间复杂度O(N)
        public int[] plusOne(int[] digits) {
            int n = digits.length - 1;
            digits[n] += 1;
            for (int i = n; i > 0 && digits[i] == 10; i--) {
                digits[i] = 0;
                digits[i - 1] += 1;
            }
            if (digits[0] != 10) return digits;
            else {
                digits[0] = 0;
                int[] temp = new int[digits.length + 1];
                temp[0] = 1;
                System.arraycopy(digits, 0, temp, 1, digits.length);
                return temp;
            }
        }
    

    Tips:

    • 本质是小学按位相加,传播进位
    • 每次遍历一个数组元素,时间复杂度显而易见
    • 至于空间复杂度高完全是因为给你的是数组,返回的也是数组,如果是List<Integer>的链表完全可以O(1)

    相关文章

      网友评论

          本文标题:加一

          本文链接:https://www.haomeiwen.com/subject/focjhktx.html