题目链接
解法
我们可以使用哈希表记录数字,用空间换时间。遍历整个数组,如果每次遍历到的数与之前的某个数之和符合要求,则结束遍历;否则将其加入到哈希表中继续遍历。
代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash;
for (int i = 0; i < nums.size(); i ++) {
int r = target - nums[i];
if (heap.count(r)) return {hash[r], i};
heap[nums[i]] = i;
}
return {};
}
};
func twoSum(nums []int, target int) []int {
m := make(map[int]int)
for i := 0; i < len(nums); i ++ {
another := target - nums[i]
if _, ok := m[another]; ok {
return []int{m[another], i}
}
m[nums[i]] = i
}
return nil
}