#!/usr/bin/env python
# coding: utf-8
# # 暴力破解:采用两层循环,时间复杂度为O($N^2$),运行时间为3320ms
# In[1]:
class Solution(object):
def twoSum(self, nums, target):
l=list()
for i in range(len(nums)-1):
flag=0
for j in range(i+1,len(nums)):
if(nums[i]+nums[j]==target):
l.append(i)
l.append(j)
flag=1
break
if(flag==1):
break
return l
so=Solution()
so.twoSum([2,7,11,15],9)
# # 只用一层循环,并且使用列表list的index方法,时间复杂度为O(N),运行时间为472ms
# In[2]:
class SS(object):
def twoSum(self,nums,target):
for i ,num in enumerate(nums):
array=nums[i+1:]
if target-num in array:
return [i,nums.index(target-num,i+1)]
return []
s3=SS()
s3.twoSum([2,7,11,15],9)
# # 只用一层循环,采用哈希表的方式(字典),时间复杂度为O(N),运行时间为20ms
# In[3]:
class S(object):
def twoSum(self,nums,target):
hashtable=dict()
for i,num in enumerate(nums):
if target-num in hashtable :
return [hashtable[target-num],i]
else:
hashtable[num]=i
return []
s2=S()
s2.twoSum([2,7,11,15],9)
力扣-python两数之和
最新推荐文章于 2022-10-07 13:44:20 发布