Java教程

1337. 矩阵中战斗力最弱的 K 行(简单算法题)

本文主要是介绍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;


    }
}
这篇关于1337. 矩阵中战斗力最弱的 K 行(简单算法题)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!