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