Day13力扣打卡

打卡记录

奖励最顶尖的 k 名学生(哈希表+排序)

用哈希表对所有的positive与negative词条进行映射,然后遍历求解。tip:常用的分割字符串的操作:1.stringstream配合getline() [格式buf, string, char]2.string.find()[find未找到目标会返回npos]配合string.substr()

cpp 复制代码
class Solution {
public:
    vector<int> topStudents(vector<string>& positive_feedback, vector<string>& negative_feedback, vector<string>& report, vector<int>& student_id, int k) {
        unordered_set<string> pos, neg;
        for (auto& s : positive_feedback) pos.insert(s);
        for (auto& s : negative_feedback) neg.insert(s);
        vector<pair<int, int>> arr;
        int n = student_id.size();
        for (int i = 0; i < n; ++i) {
            stringstream ss;
            ss << report[i];
            string tmp;
            int res = 0;
            while (getline(ss, tmp, ' ')) {
                if (pos.count(tmp)) res += 3; 
                else if (neg.count(tmp)) res--;
            }
            arr.push_back({-res, student_id[i]});
        }
        sort(arr.begin(), arr.end());
        vector<int> ans(k);
        for (int i = 0; i < k; ++i) ans[i] = arr[i].second;
        return ans;
    }
};
相关推荐
菜鸟丁小真15 分钟前
LeetCode hot100 -131.分割回文串
数据结构·算法·leetcode·知识点总结
Yuk丶18 分钟前
Procedural Dialogue Engine - UE4程序化对话系统的技术实现
c++·游戏引擎·ue4·游戏程序·虚幻
贾斯汀玛尔斯19 分钟前
每天学一个算法--PageRank
算法
自信1504130575923 分钟前
重生之从0开始学习c++之string(上)
开发语言·c++·学习
子琦啊23 分钟前
【算法复习】滑动窗口(同向区间指针)
算法
BestOrNothing_201523 分钟前
C++零基础到工程实战(4.3.8):基于 vector 实现一个简易缓存数据库
c++·vector·string·缓存数据库·stringstream·键值存储·getline
啊我不会诶30 分钟前
【自用复习】牛客每日一题2026.4.18 最大稳定数值
算法·深度优先
笨笨饿33 分钟前
66_C语言与微控制器底层开发
linux·c语言·网络·数据结构·算法·机器人·个人开发
苏宸啊1 小时前
C++异常
c++
HABuo1 小时前
【linux网络基础(二)】理解端口号&UDP、TCP协议&网络字节序
linux·服务器·c语言·网络·c++·ubuntu·centos