两数之和
1.可以直接用暴力枚举,两重循环。
2.可以排完序后用双指针,这里可以用pair即可存数值,又可以存下标
3.可以用哈希表来映射对应求值,
这里用一个循环遍历每一个数,通过target-nums[i]得出另一个数,看在哈希表中有无这个数、如果有返回哈希表的映射值,和下表i,然后同时可以直接把哈希映射的部分做完heap【nums[i]】=i;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int>heap;
for(int i=0;i<nums.size();i++){
int r=target-nums[i];
if(heap.count(r))return {heap[r],i};
heap[nums[i]]=i;
}
return {};
}
};