解题思路
暴力解法(C++)
class Solution
{
public:
vector<int> twoSum(vector<int>& nums, int target) {
int i , j;
for(i = 0; i < nums.size() - 1; i++) {
for(j = i + 1; j < nums.size(); j++) {
if(nums[i] + nums[j] == target)
return {i,j};
}
}
return {};
}
};
暴力解法(Java)
class Solution
{
public int[] twoSum(int[] nums, int target) {
int[] res = new int[2];
for(int i = 0; i < nums.length; i++){
for(int j = i + 1; j < nums.length; j++){
if(nums[i] + nums[j] == target){
res[0] = i;
res[1] = j;
}
}
return res;
}
}
哈希解法(C++)
class Solution
{
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> m;//用于保存数组元素
vector<int> r(2,-1);//用于保存结果
for(int i = 0; i < nums.size(); i++){
if(m.count(target-nums[i]) > 0){//先判断另一个数是否已在map中
r[0] = m[target-nums[i]];
r[1] = i;
break;
}
m[nums[i]] = i;//后存入map
}
return r;
}
};
字典解法(Python)
class Solution(object):
def twoSum(self, nums, target):
d = {}
for i, n in enumerate(nums):
tmp = target - n
if tmp in d:
return [d[tmp], i]
else:
d[n] = i