Monday, August 17, 2015

Leetcode 66. Plus One

https://leetcode.com/problems/plus-one/

We can do it with string operations, or just do it for list of numbers.

Solution 1:
# T:O(n) S:O(1)
class Solution:
    # @param {integer[]} digits
    # @return {integer[]}
    def plusOne(self, digits):   # offer 3-line and 1-line version
        '''
        s = ''.join([str(x) for x in digits])
        s = list(str(int(s) + 1))
        return list([int(x) for x in s])
        '''
        return list(int(x) for x in list(str(int(''.join([str(x) for x in digits]))+1)))
Run Time: 68 ms

Solution 2:
# T:O(n) S:O(1)
class Solution:
    # @param digits, a list of integer digits
    # @return a list of integer digits
    def plusOne(self, digits):
        carry = 1
        for i in reversed(xrange(len(digits))):
            digits[i] += carry
            carry = digits[i] / 10
            digits[i] %= 10
        
        if carry:
            digits = [1] + digits
        
        return digits
Run Time: 60 ms

No comments:

Post a Comment