用于记录一些通用问题,语法和函数的使用
1、一个用->second(find的返回值),一个用.second(遍历map/set时),为什么?
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::unordered_map <int,int> map;
for(int i = 0; i < nums.size(); i++) {
// 遍历当前元素,并在map中寻找是否有匹配的key
auto iter = map.find(target - nums[i]);
if(iter != map.end()) {
return {iter->second, i};
}
// 如果没找到匹配对,就把访问过的元素和下标加入到map中
map.insert(pair<int, int>(nums[i], i));
}
return {};
}
};
class Solution {
public:
bool uniqueOccurrences(vector<int>& arr) {
unordered_map<int,int> map;
unordered_set<int> set;
for(int i = 0; i < arr.size(); i++){
map[arr[i]]++;
}
for(auto count : map){
set.insert(count.second);
}
if(set.size() == map.size()) return true;
else return false;
}
};
在第一个程序中,
map
是一个unordered_map<int, int>
类型的哈希表,其中iter
是一个