插入hash表之后,要查找这个key是否存在于hash表中,应该用find函数,然后去和容器的end()进行比较
1.https://leetcode-cn.com/problems/two-sum/
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
unordered_map<int, int> hash;
vector<int> result;
for (int i = 0; i < nums.size(); i++) {
int numberToFind = target - nums[i];
//if numberToFind is found in map, return them
if (hash.find(numberToFind) != hash.end()) {
result.push_back(hash[numberToFind]);
result.push_back(i);
return result;
}
//number was not found. Put it in the map.
hash[nums[i]] = i;
}
return result;
}
};
2.https://leetcode-cn.com/problems/linked-list-cycle/submissions/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
bool hasCycle(ListNode *head)
{
if(!head || head -> next == NULL)
return NULL;
unordered_map<ListNode*, int> hash;
auto curr = head;
while(curr)
{
if(hash.find(curr) != hash.end()) //通过find函数查找看key是否存在hash函数中
return true;
hash[curr]++;
curr = curr -> next;
}
return false;
}
};
也可以判断hash[key] == 0 ? ==0 就是不存在这个值