BiruLyu
6/20/2017 - 8:37 AM

66. Plus One.java


"""
Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.

You may assume the integer do not contain any leading zero, except the number 0 itself.

The digits are stored such that the most significant digit is at the head of the list.

"""
"""
TESTCASES:

Input:
[0]
[1,2,3]
[1,2,9]
[9,9]

Output:
[1]
[1,2,4]
[1,3,0]
[1,0,0]
"""
class Solution(object):
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        
        res = [];
        flag = 1;
        for i in range(len(digits) - 1, -1 ,-1):
            temp = (digits[i] + flag) / 10;
            res.append((digits[i] + flag) % 10);
            flag = 1 if temp else 0;
        
        if flag == 1:
            res.append(1);
        
        return res[::-1];
public class Solution {
    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length < 1) return digits;
        int len = digits.length;
        for (int i = len - 1; i >= 0; i--) {
            if (digits[i] < 9) {
                digits[i]++;
                return digits;
            }
            digits[i] = 0;
        }
        
        int[] newNumber = new int[len + 1];
        newNumber[0] = 1;
        return newNumber;
    }
}