zoukankan      html  css  js  c++  java
  • 1337. 矩阵中战斗力最弱的 K 行 力扣(简单) 确实简单,结构体排序,二分也可

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

    给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。

    请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。

    如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。

    军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。

    题解:

    由于题中说1在前,可以由二分查找确定其位置,速度加快

    代码:

    class Solution {
    public:
        struct node
         {
             int k,row;
         };
        static bool cmp(node a,node b)
        {
            if (a.k!=b.k) return a.k<b.k;
              else return a.row<b.row;
        }
        vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
         
         int l=mat.size();
         node a[105];
         for(int i=0;i<l;i++)
         {
             a[i].row=i;
             a[i].k=0;    // 不能缺少,否则原始k是非0的
             for(auto j:mat[i])
              if (j==1) a[i].k++;
                else break;
         }
         sort(a,a+l,cmp);
         vector<int> res;
         for(int i=0;i<k;i++)
          res.push_back(a[i].row);
         return res;
        }
    };
  • 相关阅读:
    代码规范
    svn的牛逼操作反向merge
    QT 半透明遮罩(弹窗)
    ACE库 ACE_Handle_Set类解析
    linux系统如何启用ftp服务
    vim color
    Linux动态库应用
    自建工程makefile文件
    Makefile工程文件
    linux杂记
  • 原文地址:https://www.cnblogs.com/stepping/p/15087477.html
Copyright © 2011-2022 走看看