-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathk_weakest_rows_in_matrix.cpp
38 lines (33 loc) · 1.05 KB
/
k_weakest_rows_in_matrix.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Solution {
public:
struct Comp {
bool operator()(const pair<int, int> &l, const pair<int, int> &r) {
if(l.first != r.first) {
return l.first > r.first;
}
return l.second > r.second;
}
};
vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
if(mat.size() == 0 or k == 0) return {};
priority_queue<pair<int, int>, vector<pair<int, int>>, Comp > Q;
unordered_map<int, int> count;
for(int r = 0; r < mat.size(); r++) {
int countOnes = 0;
for(int c = 0; c < mat[r].size(); c++) {
if(mat[r][c] == 1) countOnes++;
}
count[r] = countOnes;
}
for(auto &[k, v] : count) {
Q.emplace(v, k);
}
vector<int> result;
while(k-- and !Q.empty()) {
cout<<Q.top().first<<" "<<Q.top().second<<"\n";
result.emplace_back(Q.top().second);
Q.pop();
}
return result;
}
};