[E二分] lc1337. 矩阵中战斗力最弱的 K 行(模拟+STL+二分优化)
Posted Ypuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[E二分] lc1337. 矩阵中战斗力最弱的 K 行(模拟+STL+二分优化)相关的知识,希望对你有一定的参考价值。
1. 题目来源
2. 题目解析
建军节纪念。军人守护在人民前面!致敬。
我是标题党…
- 暴力解法,统计每一行中军人总数和行号,放到
pair
中,直接排序即可。
优化:
- 统计每行的话,可以二分来统计,找到最后一个 1 的位置即可,就能知道 1 的个数了。 但在此就懒得写了,直接暴力做了。
- 时间复杂度: O ( n m ) O(nm) O(nm)
- 空间复杂度: O ( n ) O(n) O(n)
代码:
pair
存就行了。
class Solution {
public:
vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
vector<pair<int, int>> q;
for (int i = 0; i < mat.size(); i ++ ) {
int s = 0;
for (int j = 0; j < mat[0].size(); j ++ ) s += mat[i][j];
q.push_back({s, i});
}
sort(q.begin(), q.end());
vector<int> res;
for (int i = 0; i < k; i ++ ) res.push_back(q[i].second);
return res;
}
};
以上是关于[E二分] lc1337. 矩阵中战斗力最弱的 K 行(模拟+STL+二分优化)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Algorithm 1337. 矩阵中战斗力最弱的 K 行
Python描述 LeetCode 1337. 矩阵中战斗力最弱的 K 行
LeetCode 1337. 矩阵中战斗力最弱的 K 行/215. 数组中的第K个最大元素(topk快排堆排)/743. 网络延迟时间(最短路径迪杰斯特拉,弗洛伊德)