LeetCode in python

在这里插入图片描述

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
         for i in range(len(nums)-1):
                for j in range(i+1,len(nums)):
                    if nums[i]+nums[j]==target:
                        return [i,j]

Runtime: 7072 ms, faster than 6.36% of Python3 online submissions for Two Sum.
Memory Usage: 13.9 MB, less than 21.95% of Python3 online submissions for Two Sum.        
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
         for i in range(len(nums)):
                n = target-nums[i]
                temp_nums=nums[i+1:]
                if n in temp_nums:
                    return [i,temp_nums.index(n)+1+i]
                
                
Runtime: 836 ms, faster than 36.68% of Python3 online submissions for Two Sum.
Memory Usage: 13.6 MB, less than 44.93% of Python3 online submissions for Two Sum.        
        
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        
        d = {}
            
        for i in range(len(nums)):
            if target-nums[i] not in d:                    
                d[nums[i]] = i
            else:
                return [d[ target-nums[i]],i]

Runtime: 40 ms, faster than 85.36% of Python3 online submissions for Two Sum.
Memory Usage: 14.3 MB, less than 5.11% of Python3 online submissions for Two Sum.

2.罗马数字转阿拉伯数字

class Solution:
    def romanToInt(self, s: str) -> int:
        d = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
        n = 0 
        i = 0
        while i < len(s)-1:
            if d[s[i]] > d[s[i+1]] :
                n += d[s[i]]
                i += 1
            elif d[s[i]] < d[s[i+1]]:
                n += d[s[i+1]]-d[s[i]]
                i += 2
            else:
                n += d[s[i+1]] + d[s[i]]
                i += 2
        if i == len(s)-1:
            n += d[s[i]]
        return n        
                
         

3
在这里插入图片描述

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        if n ==0:
            return []
        result = []
        self.helper(n,n,'',result)
        return result
    def helper(self,l,r,item,result):
        if l > r:
            return 
        if l==0 and r==0:
            result.append(item)
        if l>0:
            self.helper(l-1,r,item+'(',result)
        if r>0:
            self.helper(l,r-1,item+')',result)
        

4

在这里插入图片描述

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums:
            return 0
        count = 0
        for i in range(len(nums)):
            if nums[count] != nums[i]:
                count += 1
                nums[count]=nums[i]
        nums=nums[:count+1]        
        return count + 1        

你不需要考虑数组中超出新长度后面的元素。
源程序修改为:

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        if not nums:
            return 0
        count = 0
        for i in range(len(nums)):
            if nums[count] != nums[i]:
                count += 1
                nums[count]=nums[i]
              
        return count + 1     

5
在这里插入图片描述

class Solution:
    def isValid(self, s: str) -> bool:
        
        l = []
        d = {'(':')','[':']','{':'}'}

        for i in s:
            if i in d:
                l.append(i)
            #如果当前i不再d中,则l为空表明不合法
            elif len(l)==0 or d[l.pop()] != i:
                return False

# 如果合法,则l中元素被消掉,即为空            
        return len(l)==0    
                
        

6
在这里插入图片描述

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        indicator = 0
        for i in range(len(haystack)-len(needle)+1):
            if haystack[i:i+len(needle)] == needle:
                indicator = 1
                return i
                
                
        if indicator == 0:
            return -1

indicator的设置有些多余
更优解法

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        if needle == '':
            return 0
 
        for i in range(len(haystack)-len(needle)+1):
            if haystack[i:i+len(needle)] == needle:
                indicator = 1
                return i
            
        return -1
        
        

猜你喜欢

转载自blog.csdn.net/baidu_41867252/article/details/89294210
今日推荐