66. Plus One

最后更新

二刷
12-Jan-2017

看了一刷的做法,发现自己二刷做的真是丑陋。。重新按一刷思路做了一下。。

还是从右往左找第一个不是9的数位。。都是9的话答案就是1000000000000这= =

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

一刷
03-Nov-2016

从右往左找第一个不是9的数位,然后分情况讨论。

Time: O(n)
Space: O(1)

public class Solution {
    public int[] plusOne(int[] digits) {
        int i = digits.length - 1;
        for (i = digits.length - 1; i >= 0; i--) {
            if (digits[i] != 9) break;
        }
        
        if (i >= 0) {
            digits[i]++;
            for (int j = i+1; j < digits.length; j++) {
                digits[j] = 0;
            }
                return digits;
        } else {
            int[] res = new int[digits.length+1];
            for (int j = 1; j < digits.length; j++) {
                res[j] = 0;
            }
            res[0] = 1;
            return res;
        }
        
    }
}
原文地址:https://www.cnblogs.com/reboot329/p/6029724.html