[leetcode]Plus One

简单题。进位加法,或者数九就可以了。

public class Solution {
    public int[] plusOne(int[] digits) {
        // Start typing your Java solution below
        // DO NOT write main() function
        int[] ret = digits;
        int len = digits.length;
        if (len == 0) return ret;
        
        int i = len - 1;
        while (i >= 0 && digits[i] == 9) {
            i--;
        }
        if ( i == -1) {
            ret = new int[len+1];
            ret[0] = 1;
        }
        else {
            digits[i]++;
            for (int j = i+1; j < len; j++) {
                digits[j] = 0;
            }
        }
        
        return ret;
    }
}

Python3

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        result = digits[:]
        i = len(digits) - 1
        carry = 1
        while i >= 0:
            if carry == 0:
                break
            result[i] += carry
            if result[i] >= 10:
                carry = 1
                result[i] -= 10 
            else:
                carry = 0
            i -= 1
        if carry == 1:
            result.insert(0, 1)
        return result

  

posted @ 2013-08-08 13:36  阿牧遥  阅读(183)  评论(0编辑  收藏  举报