c++:
暴力for:
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{i,j};
}
}
}
return {};
}
};
哈希:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int>hash_map;
for(int i = 0;i < nums.size();i++){
auto it = hash_map.find(target - nums[i]);
if(it != hash_map.end()){
return {it->second,i};
}
hash_map[nums[i]] = i;
}
return {};
}
};
go:
func twoSum(nums []int, target int) []int {
for k1 := 0; k1 < len(nums); k1++{//暴力解答
for k2 := k1+1; k2 < len(nums); k2++{
if target == nums[k1] + nums[k2]{
return []int{k1,k2}
}
}
}
return []int{}
}
哈希:
func twoSum(nums []int, target int) []int {
m := make(map[int]int)
for index, val := range nums{
if index2,ok := m[target-val]; ok{
return []int{index2,index}
}else{
m[val] = index
}
}
return []int{}
}