Leetcode-1086 high five(前五科的均分)

本文介绍了一种使用C++实现的学生高分筛选算法,通过优先队列和比较器来高效地找出每个学生的前五次最高考试成绩,并计算平均分。此算法适用于大量学生成绩数据的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 #define _for(i,a,b) for(int i = (a);i < b;i ++)
 2 struct cmp
 3 {
 4     bool operator() (int a,int b)
 5     {
 6         return a>b;
 7     }
 8 };
 9 class Solution
10 {
11     public:
12         vector<vector<int>> highFive(vector<vector<int>>& items)
13         {
14             vector<priority_queue<int,vector<int>,cmp>> v(1002);
15             _for(i,0,items.size())
16             {
17                 if(v[items[i][0]].size() < 5)
18                 {
19                     v[items[i][0]].push(items[i][1]);
20                 }
21                 else
22                 {
23                     if(items[i][1] > v[items[i][0]].top())
24                     {
25                         v[items[i][0]].pop();
26                         v[items[i][0]].push(items[i][1]);
27                     }
28                 }
29             }
30             vector<vector<int>> rnt;
31             _for(i,0,1001)
32             {
33                 if(v[i].size()==5)
34                 {
35                     int sum = 0;
36                     while(v[i].size())
37                     {
38                         sum += v[i].top();
39                         v[i].pop();
40                     }
41                     vector<int> tmp;
42                     tmp.push_back(i);
43                     tmp.push_back(sum/5);
44                     rnt.push_back(tmp);
45                 }
46             }
47             return rnt;
48         }
49 };

 

转载于:https://www.cnblogs.com/Asurudo/p/11029390.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值