算法学习(查找表相关的问题)

2021-12-22  本文已影响0人  SEU小翔哥

set 和 map 常见操作
insert, find, erase, change(map),count
set:
record.find(x) != record.end() //查看set里面有没有x这个元素
res_set.insert(x) // 在set中插入x这个值
unordered_set<int> record(nums1.begin(), nums1.end()) //将vector的值赋值给set
vector<int> res_vector(res_set.begin(),res_set.end()) //将set的值赋值给vector
map:
record.count(x) //判断record哈希表中有没有x

LeetCode 349 两个数组的交集,方法:set的使用

image.png

LeetCode 350 两个数组的交集II, 方法:map的使用

image.png

LeetCode 242 有效的字母异位词(练习),完成,方法:hash_map

image.png

LeetCode 202 快乐数(练习), 完成,方法:用哈希集合检测循环

image.png

LeetCode 290 单词规律(练习), 完成,方法:双哈希表

image.png

LeetCode 205 同构字符串(练习), 完成, 方法:双哈希表

image.png

LeetCode 451 根据字符出现频率排序(练习), 完成,方法:哈希表+对含pair的vector排序

sort(vec.begin(), vec.end(), [](const pair<char,int> &a, const pair<char,int> &b){return a.second > b.second;});

image.png

LeetCode 1 两数之和,方法哈希map

image.png

LeetCode 15 三数之和(练习),完成,方法:双指针。hash表效率很低

image.png

LeetCode 18 四数之和(练习),完成,方法:双指针

image.png

LeetCode 16 最接近三数之和(练习)完成,方法:双指针。

image.png

LeetCode 454 四数相加

image.png

LeetCode 49 字母异位词分组(练习),完成,方法:哈希表

    vector<vector<string>> res;
    unordered_map<string,vector<string>> record;
    for(auto it = record.begin(); it != record.end(); ++it){
        res.push_back(it->second);
    }
image.png

LeetCode 447 回旋镖的数量

image.png

LeetCode 149 直线上最多的点数(练习)

image.png

LeetCode 219 存在重复元素, 方法:滑动窗口+set查找

image.png

LeetCode 217 存在重复元素(练习)

image.png

LeetCode 220 存在重复元素III, 方法:使用record.lower_bound()

image.png
上一篇下一篇

猜你喜欢

热点阅读