《算法集训传送门》
👉引言
铭记于心🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉
💖
❄️我们的算法之路❄️💖
众所周知,作为一名合格的程序员,算法 能力 是不可获缺的,并且在算法学习的过程中我们总是能感受到算法的✨魅力✨。
☀️🌟短短几行代码,凝聚无数前人智慧;一个普通循环,即是解题之眼🌟☀️
💝二分,💝贪心,💝并查集,💝二叉树,💝图论,💝深度优先搜索(dfs),💝宽度优先搜索(bfs),💝数论,💝动态规划等等, 路漫漫其修远兮,吾将上下而求索! 希望在此集训中与大家共同进步,有所收获!!!🎉🎉🎉
今日主题:哈希表
👉⭐️第一题💎
✨题目
442. 数组中重复的数据
✨思路:
使用哈希表进行计数,这里使用map代替,然后统计所有次数为2的返回
✨代码:
classSolution{public:
vector<int>findDuplicates(vector<int>& nums){
map<int,int>ans;for(int i =0; i < nums.size(); i++){
ans[nums[i]]++;}
vector<int>res;for(map<int,int>::iterator it = ans.begin(); it != ans.end(); it++){if(it->second ==2)res.push_back(it->first);}return res;}};
👉⭐️第二题💎
✨题目
2068. 检查两个字符串是否几乎相等
用两个哈希表统计两个字符串中各字符出现的次数,然后分别遍历每个哈希表,得到value1与该key在另外一个哈希表中的vlaue2的绝对差值,若出现大于3则返回false
✨代码:
classSolution{public:boolcheckAlmostEquivalent(string word1, string word2){
map<char,int>ans1, ans2;for(char t : word1){
ans1[t]++;}for(char t : word2){
ans2[t]++;}for(map<char,int>::iterator it = ans1.begin(); it != ans1.end(); it++){if(abs(ans2[it->first]- it->second)>3)returnfalse;}for(map<char,int>::iterator it = ans2.begin(); it != ans2.end(); it++){if(abs(ans1[it->first]- it->second)>3)returnfalse;}returntrue;}};
👉⭐️第三题💎
✨题目
2283. 判断一个数的数字计数是否等于数位的值
✨思路:
思路
✨代码:
classSolution{public:booldigitCount(string num){int n[11]={0};for(int i =0; i < num.size(); i++){
n[num[i]-'0']++;}for(int i =0; i < num.size(); i++){if(n[i]!=(num[i]-'0'))returnfalse;}returntrue;}};
👉⭐️第四题💎💎
✨题目
884. 两句话中的不常见单词
✨思路:
这里使用sstream分割字符串中的空格,其实正常的话直接scanf就行,但是力扣这里需要提供接口就没办法了,,跟之前一样,计数完后查找即可
✨代码:
classSolution{public:
vector<string>uncommonFromSentences(string s1, string s2){
vector<string>ans;
map<string,int>t1, t2;
stringstream ss;
ss << s1;
string tem;while(getline(ss, tem,' ')) t1[tem]++;
ss.clear();
ss.str("");
ss << s2;while(getline(ss, tem,' ')) t2[tem]++;for(map<string,int>::iterator it = t1.begin(); it != t1.end(); it++){if(it->second ==1&&(!t2[it->first])){
ans.push_back(it->first);}}for(map<string,int>::iterator it = t2.begin(); it != t2.end(); it++){if(it->second ==1&&(!t1[it->first])){
ans.push_back(it->first);}}return ans;}};
⭐️总结⭐️
今天的题比较简单,主要就是使用哈希表进行计数,然后寻找关系,哈希表可以自己用数组设置,进阶一点的话会有加强哈希表,可以存储更多信息
写在最后:
相信大家对今天的集训内容的理解与以往已经有很大不同了吧,或许也感受到了算法的魅力,当然这是一定的,路漫漫其修远兮,吾将上下而求索!伙伴们,明天见!
版权归原作者 梦想new的出来 所有, 如有侵权,请联系我们删除。