方法一 个人方法 排序
题目要求就是找出每行有多少个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);
};
消耗时间和内存情况: