zoukankan      html  css  js  c++  java
  • lc11~lc20

    11 12 13 14 15 16 17 18 19 20  
    完成 完成 完成 完成  完成 完成  完成   完成 完成  

    11.

    class Solution:
        def maxArea(self, height):
            l = 0
            r = len(height) -1
            
            area = 0
            
            if len(height) <=1:
                return 0
            
            area = (r-l) * (height[l] if height[l]<height[r] else height[r])
            
            while l < r:
                if height[l] < height[r]:
                    l = l + 1
                else:
                    r = r - 1
                print(l)
                area = max(area, (r-l) * (height[l] if height[l]<height[r] else height[r]))
            return area
                
            
            
    if __name__ == '__main__':
        height = [1,8,6,2,5,4,8,3,7]
        sol = Solution()
        r = sol.maxArea(height) 
        print(r)

    12. 

    class Solution:
        def intToRoman(self, num):
            
            m_roman = ('','M','MM','MMM')
            c_roman = ('', 'C','CC','CCC','CD','D','DC','DCC','DCCC','CM')
            x_roman = ('','X','XX','XXX','XL','L','LX','LXX','LXXX','XC')
            i_roman = ('','I','II','III','IV','V','VI','VII','VIII','IX')        
            r_str = m_roman[num//1000] + c_roman[num%1000//100] + x_roman[num%100//10] + i_roman[num%10]
            return r_str
    
        
    if __name__ == '__main__':
        sol = Solution()
        print(sol.intToRoman(50))

    13.

    class Solution:
        def romanToInt(self, s):
            
            num = 0
            for i in range(len(s)):
                if s[i]=='M':
                    if(i>0 and s[i-1] == 'C'):
                        num = num + 900 - 100
                    else:
                        num = num + 1000
                    
                if s[i] == 'D':
                    if (i>0 and s[i-1] == 'C'):
                        num = num + 400 - 100
                    else:
                        num = num + 500
                
                if s[i] == 'C':
                    if (i>0 and s[i-1] == 'X'):
                        num = num + 90 -10
                    else:
                        num = num + 100
                    
                if s[i] == 'L':
                    if (i>0 and s[i-1] == 'X'):
                        num = num + 40 - 10
                    else:
                        num = num + 50
                
                if s[i] == 'X':
                    if (i>0 and s[i-1]=='I'):
                        num = num + 9 -1
                    else:
                        num = num + 10
                if s[i] == 'V':
                    if(i>0 and s[i-1] == 'I'):
                        num = num + 4 - 1
                    else:
                        num = num + 5
                    
                if s[i] == 'I':
                    num = num + 1
                    
            return num
        
    
    if __name__ == '__main__':
        sol = Solution()
        print(sol.romanToInt('MCMXCIV'))
        print(sol.romanToInt('LVIII'))
        print(sol.romanToInt('IX'))

    14.

    class Solution:
        def longestCommonPrefix(self, strs):
            
            r = ''
            
            for s in zip(*strs):
                if(len(set(s))==1):
                    r = r + s[0]
                else:
                    return r
         
            return r 
    
    if __name__ == '__main__':
        
        sol = Solution()
        
        strs = ['flower', 'flow', 'flight']
        
        print(sol.longestCommonPrefix(strs))

    15.

    class Solution:
        def threeSum(self, nums):
            nums_sort = sorted(nums)
            
            i = 0
            r = []
            while i < len(nums) - 2:
    
                if i>0 and nums_sort[i] == nums_sort[i-1]:
                    i = i + 1
                else:
                    left = i + 1
                    right = len(nums_sort) -1
                    
                    while left < right:
                        
                        target = nums_sort[i] + nums_sort[left] + nums_sort[right]
                        if target == 0:
                            r.append([nums_sort[i],nums_sort[left],nums_sort[right]])
                            
                            while left<right and nums_sort[left] == nums_sort[left+1]:
                                left = left + 1
                            while left<right and nums_sort[right] == nums_sort[right-1]:
                                right = right - 1
                            
                            right = right - 1
                            left = left + 1
                        if target<0:
                            left = left + 1
                        if target>0:
                            right = right - 1
                            
                    i = i + 1            
            return r
        
        
    if __name__ == '__main__':
        nums = [-1,0,1,2,-1,4,-2,-2,-2,4,4]
        sol = Solution()
        print(sol.threeSum(nums))

    16.

    class Solution:
        def threeSumClosest(self, nums, target):
            
            nums = sorted(nums)
            
            i = 0
            res = sum(nums[:3])
            n = len(nums)
            for  i  in range(n - 2):
                left, right = i + 1, n -1
                while left<right:
                    temp = nums[i] + nums[left] + nums[right]
                    
                    if abs(temp - target) < abs(res - target):
                        res = temp
                    if res == target:
                        print(i, left, right, target, temp)
                        break
                    elif target > res:
                        left = left + 1
                        print(i, left, right, target, temp)
                    elif target < res:
                        right = right - 1
                        print(i, left, right, target, temp)
                                
            return res
        
        
    if __name__ == '__main__':
        nums = [-1,2,1,-4,1]
        sol = Solution()
        print(sol.threeSumClosest(nums, 1))

    17.

    class Solution:
        def letterCombinations(self, digits):
            
            dic = {}
            dic.update({'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv', '9':'wxyz'})
            
            if not digits:
                return []
            
            res = [ i for i in dic[digits[0]]]
            
            for i in digits[1:]:
                res = [ m+n for m in res for n in dic[i]]
                print (res)
                
            return res   
        
        
            list_str = []
            
            return list_str
        
        
    if __name__ == '__main__':
        sol = Solution()
        digits = '2345678'
        print(sol.letterCombinations(digits))

    18.

    19. 

    class ListNode:
        def __init__(self, x):
            self.val = x
            self.next = None
            
    class Solution:
        def removeNthFromEnd(self, head, n):
            
            head_list = []
            count = 0
            while head:
                head_list.append(head)
                head = head.next
                count = count + 1
                #print(count)
                
            if count == 1:
                return None
                
            if head_list[-n].next == None:
                head_list[-n-1].next = None
                return head_list[0]
            else:
                head_list[-n].val = head_list[-n].next.val
                head_list[-n].next = head_list[-n].next.next
                return head_list[0]
    
    if __name__ == '__main__':
        l1 = ListNode(1)
        l1.next = l11 = ListNode(2)
        l11.next = l12 = ListNode(3)
        l12.next = l13 = ListNode(4)
        l13.next = l14 = ListNode(5)
        head = l1
        sol = Solution()
        res = sol.removeNthFromEnd(l1, 5)
        
        while res:
            print(res.val)
            res = res.next

    20.

    class Solution:
        def isValid(self, s):
            
            s_list = []
            dic = {}
            dic.update({'}':'{', ']':'[', ')':'('})
            
            for i in range(len(s)):
                if s[i] in ['(','[','{']:
                    s_list.append(s[i])
                    
                if s[i] in [')',']','}']:
                    if (len(s_list) == 0) or (s_list[len(s_list)-1] != dic[s[i]]):
                        break
                    else:
                        s_list.pop()
            
            if len(s_list) == 0:
                return 'true'
            else:
                return 'false'
            
                
            
            
            
    if __name__ == '__main__':
        sol = Solution()
        print(sol.isValid('[({}[]())]'))
  • 相关阅读:
    缠中说禅 摘选
    laravel中不使用 remember_token时退出报错,如何解决?
    关于Ubuntu拒绝root用户ssh远程登录
    laravel中类似于thinkPHP中trace功能
    js原生语法实现表格操作
    使用clear来清除localStorage保存对象的全部数据
    JS设置CSS样式的集中方式
    thinkphp两表联查并且分页
    生于忧患,死于安乐 (先秦:孟子及其弟子)
    在对年轻人最不友好的环境中,刘裕起于阡陌,成就霸业
  • 原文地址:https://www.cnblogs.com/laojifuli/p/11925982.html
Copyright © 2011-2022 走看看