leetcode 解答 in python 3.6

自己做的 刚开始做 写的有点慢

第1题

class Solution(object):
    def twoSum(nums, target):
        count=0
        for a in range(0,len(nums)-1):
            count+=1
            for b in range(count,len(nums)):
                if(nums[a]+nums[b]==target):
                    return [a,b]
        print('No Result')
        return None

    print(twoSum(nums=[2,3,4],target=6))

第2题

class Solution(object):
    def addTwoNumbers(self, l1, l2):
        res = {}
        finalres = []
        up = 0
        w = 0
        while l1 != None and l2 != None:
            sum = l1.val + l2.val
            if (sum > 9):
                up = 1
                res[str(w + 1)] = 1
                if (res.get(str(w)) != None):
                    res[str(w)] = res.get(str(w)) + (sum % 10)
                else:
                    res[str(w)] = sum % 10
                w += 1
                l1 = l1.next
                l2 = l2.next
            else:
                up = 0
                if (res.get(str(w)) != None):
                    res[str(w)] = res[str(w)] + sum
                    if (res.get(str(w)) > 9):
                        res[str(w)] = res[str(w)] - 10
                        res[str(w + 1)] = 1
                else:
                    res[str(w)] = sum
                w += 1
                l1 = l1.next
                l2 = l2.next
        while l1 != None:
            if (res.get(str(w)) != None):
                res[str(w)] = res[str(w)] + l1.val
                if (res.get(str(w)) > 9):
                    res[str(w)] = res[str(w)] - 10
                    res[str(w + 1)] = 1
            else:
                res[str(w)] = l1.val
            w += 1
            l1 = l1.next
        while l2 != None:
            if (res.get(str(w)) != None):
                res[str(w)] = res[str(w)] + l2.val
                if (res.get(str(w)) > 9):
                    res[str(w)] = res[str(w)] - 10
                    res[str(w + 1)] = 1
            else:
                res[str(w)] = l2.val
            w += 1
            l2 = l2.next

        for _ in range(w + 1):
            if (res.get(str(_)) != None):
                finalres.append(res.get(str(_)))

        return finalres

第20题

# 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
# #
# # 有效字符串需满足:
# #
# # 左括号必须用相同类型的右括号闭合。

class Solution(object):
    def push(self,list,obj):
        list.append(obj)
        print('push ',obj,'successed and the index is ',len(list))
        return obj

    def pop(self,list):
        if(len(list)!=0):
            obj=list[-1]
            list.pop()
            print('pop',obj,'successed')
            return obj
        else:
            return None

    def getTop(self,list):
        if len(list)!=0:
            return list[-1]
        else:
            return None

    def isValid(self,s):
        sa=list(s)
        listA=[]
        listB=[]
        for _ in range(len(sa)):
            self.push(listA,sa[len(sa)-_-1])
        print('listA start : ',listA)

        for firstPop in range(len(sa)):
            if len(listA)==0:
                print('break')
                break
            topA=self.getTop(listA)
            if(topA=='('or topA=='[' or topA=='{'):
                self.pop(listA)
                self.push(listB,topA)

            else:
                b = self.getTop(listB)
                if((topA == ')' and b == '(') or (topA == ']' and b == '[') or (topA == '}' and b == '{')):
                    self.pop(listA)
                    self.pop(listB)
                else:
                    return False



        print('listA:', listA)
        print('listB:', listB)
        a=self.getTop(listA)
        b=self.getTop(listB)

        if(a==None and b==None):
            return True
        else:
            return False

第66题

#
# 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
#
# 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
#
# 你可以假设除了整数 0 之外,这个整数不会以零开头。
# 示例 1:
#
# 输入: [1,2,3]
# 输出: [1,2,4]
# 解释: 输入数组表示数字 123。
# 示例 2:
#
# 输入: [4,3,2,1]
# 输出: [4,3,2,2]
# 解释: 输入数组表示数字 4321。

class Solution(object):
    def plusOne(digits):
        newlist=[]
        newlist2=[]
        #判断输入是否为空
        if(len(digits)==0):
            print('there\'s no digits')
            return None

        else:
            getTheLast=digits.pop()
            sum=getTheLast+1
            if(sum==10):
                newlist.append(0)
                if(len(digits)!=0):
                    t=digits.pop()+1
                    digits.append(t)
                else:
                    digits.append(1)
            else:
                #如果小于10直接递归结束
                newlist.append(sum)
                print('sum',sum)
                while(len(digits)!=0):
                    newlist.append(digits.pop())

        while(len(digits)!=0):
            gtl = digits.pop()

            if (gtl == 10):
                newlist.append(0)
                if (len(digits)!=0):
                    digits.append(digits.pop() + 1)
                else:
                    digits.append(1)
            else:
                newlist.append(gtl)
                while (len(digits) != 0):
                    newlist.append(digits.pop())
            print('digits:', digits)
            print('newlist:',newlist)
        #反转
        for _ in range(len(newlist)):
            newlist2.append(newlist[len(newlist)-_-1])
        print(newlist2)
        return newlist2

    plusOne([9,9])


未完待续

猜你喜欢

转载自blog.csdn.net/w6790400/article/details/84029652