数组排序、计数器、贪心算法
【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; } }