题解 | 小红书推荐系统
小红书推荐系统
https://www.nowcoder.com/practice/e5b39c9034a84bf2a5e026b2b9b973d0
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
struct stu
{
string word;//单词
int num;//出现次数
};
bool com(stu a,stu b)
{
if(a.num!=b.num) return a.num>b.num;//频次从高到低
return a.word<b.word;//字典序升序
}
int main() {
map<string,int> m;//哈希表<单词,出现次数>
string s;
while(cin >> s)//输入每个单词
{
m[s]++;//单词出现次数增加
}
vector<stu> lie;//初始化‘期望搜索单词’数组
for(auto it:m)//遍历哈希表
{
if(it.second>=3)
{
lie.push_back({it.first,it.second});//满足条件的放入数组
}
}
sort(lie.begin(),lie.end(),com);//条件排序
for(auto i:lie)//遍历数组
{
cout << i.word << '\n';
}
}
// 64 位输出请用 printf("%lld")
思路:
1,将所有单词插入哈希表中
2,把哈希表中满足条件的单词及频率放入结构体数组中
3,将数组条件排序后输出


查看3道真题和解析