1337. 矩阵中战斗力最弱的 K 行(简单算法题)
作者:互联网
1337. 矩阵中战斗力最弱的 K 行
数组排序、计数器、贪心算法
真正的考点:二分查找
【1,1,1,0,0,0】只有1和0,如果一个一个找1太慢所以直接二分找可以减小时间复杂度!
暴力求解
由于没有想到是二分查找的变形,所以暴力求解
还好没有时间空间限制!感谢leetcode小编。
class Solution {
public int[] kWeakestRows(int[][] mat, int k) {
int[] res =new int[k];
int len = mat.length;
int len2 = mat[0].length;
int[] sortTemp =new int[len];
//二维数组记录row和counter
int[][] row_nums = new int [len][2];
for(int i=0;i<len;i++){
int count = 0;
for(int j=0;j < len2;j++){
row_nums[i][0] = i;
if(mat[i][j] == 1){
count++;
}
row_nums[i][1] = count;
sortTemp[i] = count;
}
row_nums[i][1] = count;
sortTemp[i] = count;
}
System.out.println(Arrays.toString(sortTemp));
Arrays.sort(sortTemp);
System.out.println(Arrays.toString(sortTemp));
//排序后反向查找
for(int i =0;i<k;i++){
int temp = sortTemp[i];
for(int j=0;j <len;j++){
if(row_nums[j][1]==temp){
res[i]=row_nums[j][0];
row_nums[j][1] = -1;
break;
}
}
}
return res;
}
}
标签:count,mat,sortTemp,nums,int,1337,矩阵,最弱,row 来源: https://blog.csdn.net/gao1213977085/article/details/119303493