2014年11月27日星期四

[Leetcode] Plus One

Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.


    public int[] plusOne(int[] digits) {
        int n = digits.length;
        if(n == 0)
            return digits; // corner case
        int carry = 1;
        // simulate the plus
        for(int i = n-1; i >= 0; i--) {
            digits[i] = digits[i] + carry;
            carry = digits[i] / 10;
            digits[i] = digits[i] % 10;
        }
        // have one carry at last need to resize the array
        if(carry != 0) {
            int[] res = new int[n+1];
            for(int i = n; i >= 1; i--) {
                res[i] = digits[i-1];
            }
            res[0] = carry;
            digits = res;
        }
        return digits;
    }

没有评论:

发表评论