题目链接:Two Sum
C++
//C++
//Approach 1:Brute Force
//时间复杂度O(n^2),空间复杂度O(1)
class Solution{
public:
vector<int> twoSum(vector<int>& nums, int target){
vector<int> ret;
int flag=0;
for(int i=0; i<nums.size();i++)
{
for(int j=i+1;j<nums.size();j++)
if(nums[i]+nums[j]==target)
{
ret.push_back(i);
ret.push_back(j);
flag=1;
break;
}
if(flag==1)break;
}
return ret;
}
};
//Approach 2:Two-pass Hash Table
//时间复杂度O(n),空间复杂度O(n), map遍历两次
class Solution{
public:
vector<int> twoSum(vector<int>& nums,int target){
vector<int> ret;
map<int,int>temp;
map<int,int>::iterator it;
for(int i=0;i<nums.size();i++) //create a map
temp.insert(pair<int,int>(nums[i],i));
for(int i=0;i<nums.size();i++){
it = temp.find(target-nums[i]);
if(it!=temp.end()&&it->second!=i) //it!=temp.end() 表示 该下标存在, it->second!=i 表示该下标不等于当前值
{
ret.push_back(i);
ret.push_back(it->second);
break;
}
}
return ret;
}
};
//Approach 3:One-pass Hash Table
//时间复杂度O(n),空间复杂度O(n), map遍历一次
class Solution{
public:
vector<int> twoSum(vector<int>& nums, int target){
vector<int>ret;
map<int,int>temp;
map<int,int>::iterator it;
for(int i=0;i<nums.size();i++){
it=temp.find(target-nums[i]);
if(it!=temp.end()&&it->second!=i){
ret.push_back(i);
ret.push_back(it->second);
break;
}
temp.insert(pair<int,int>(nums[i],i));
}
return ret;
}
};
Python
#Approach 1
class Solution:
def twoSum(self,nums: List[int], target:int) ->List[int]:
len1 = len(nums)
flag = 0
for i in range(0,len1):
for j in range(i+1,len1):
if(nums[i]+nums[j]==target):
flag=1;
return [i,j]
#Approach 2
class Solution:
def twoSum(self,nums: List[int], target:int) ->List[int]:
hashtable = {value: index for index,value in enumerate(nums)}
for index,value in enumerate(nums):
result = target - value
hash_index = hashtable.get(result)
if hash_index and hash_index !=index:
return [index,hash_index]
#Approach 3
class Solution:
def twoSum(self, nums: List[int], target:int)->List[int]:
hash_table={}
for i in range(len(nums)):
result = target - nums[i]
if result in hash_table.keys():
return [i,hash_table[result]]
else:
hash_table[nums[i]]=i
return