Two Sum
C++
solution1:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
for(int i=0;i<nums.size();i++)
{for(int j=i+1;j<nums.size();j++)
{
if(nums[i]+nums[j]==target)
{ return vector<int>({i, j});
}
}
}
}
Solution2:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> m;
for (int i = 0; i < nums.size(); ++i) {
if (m.count(target - nums[i])) {
return {i, m[target - nums[i]]};
}
m[nums[i]] = i;
}
return {};
}
};
涉及到两个容器,unordered_map和vector,可以去google一下。
Python
Solution:
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(len(nums)) :
res = target - nums[i]
if res in nums[i+1:]:
return [i, nums[i+1:].index(res)+i+1]
break
Time Limit Exceeded:
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(len(nums)) :
for j in range(i+1,len(nums)):
if nums[i] + nums[j] == target:
return [i,j]
break
Python代码和C++相同的思路,但是却出现了超时,Python的效率还是低很多。