每日一题——LeetCode1337.矩阵中战斗力最弱的K行

 

方法一 个人方法 排序

题目要求就是找出每行有多少个1,根据每行1的个数进行排序,但是是把每行在数组中的位置索引进行排序,并返回前k项

所以先统计每行1的个数,并将数组转化为[index,count]就是索引加个数的数组形式,再利用自定义sort()针对数组中count的大小进行排序,最后返回排序后前k项的index索引

var kWeakestRows = function(mat, k) {
    let res=[],count=0,min=9999
    for(let i=0;i<mat.length;i++){
       for(let num of mat[i]){
           if(num===1){
               count++
           }
       }
       if(count<min){
           min=count
       }
       res.push([i,count])
       count=0
    }
    res.sort((a,b)=>a[1]-b[1])
    let ret=[]
    for(let i=0;i<k;i++){
        ret.push(res[i][0])
    }
   return ret
};

消耗时间和内存情况:

方法二 方法一简化写法:

var kWeakestRows = function(mat, k) {
    let matMap = mat.map((item, index) => ({
        index: index,
        num: item.reduce((pre,next) => next + pre)
    }))
    return matMap.sort((a, b) => a.num - b.num).filter((item, index) => index <= k-1).map(item => item.index);
};

 消耗时间和内存情况:

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值