[E二分] lc1337. 矩阵中战斗力最弱的 K 行(模拟+STL+二分优化)

Posted Ypuyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[E二分] lc1337. 矩阵中战斗力最弱的 K 行(模拟+STL+二分优化)相关的知识,希望对你有一定的参考价值。

1. 题目来源

链接:1337. 矩阵中战斗力最弱的 K 行

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 行

1337. 矩阵中战斗力最弱的 K 行

1337. 矩阵中战斗力最弱的 K 行

leetcode1337. 矩阵中战斗力最弱的K行

Python描述 LeetCode 1337. 矩阵中战斗力最弱的 K 行

LeetCode 1337. 矩阵中战斗力最弱的 K 行/215. 数组中的第K个最大元素(topk快排堆排)/743. 网络延迟时间(最短路径迪杰斯特拉,弗洛伊德)