• 【力扣】1337.矩阵中战斗力最弱的k行


    给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。

    请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序

    如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。

    军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。

    示例 1:

    输入:mat = 
    [[1,1,0,0,0],
     [1,1,1,1,0],
     [1,0,0,0,0],
     [1,1,0,0,0],
     [1,1,1,1,1]], 
    k = 3
    输出:[2,0,3]
    解释:
    每行中的军人数目:
    行 0 -> 2 
    行 1 -> 4 
    行 2 -> 1 
    行 3 -> 2 
    行 4 -> 5 
    从最弱到最强对这些行排序后得到 [2,0,3,1,4]

    示例 2:

    输入:mat = 
    [[1,0,0,0],
     [1,1,1,1],
     [1,0,0,0],
     [1,0,0,0]], 
    k = 2
    输出:[0,2]
    解释: 
    每行中的军人数目:
    行 0 -> 1 
    行 1 -> 4 
    行 2 -> 1 
    行 3 -> 1 
    从最弱到最强对这些行排序后得到 [0,2,3,1]

    提示:

    m == mat.length
    n == mat[i].length
    2 <= n, m <= 100
    1 <= k <= m
    matrix[i][j] 不是 0 就是 1

     代码:

    1. class Solution {
    2. public int[] kWeakestRows(int[][] mat, int k) {
    3. TreeMap map = new TreeMap<>();//有序集合
    4. for (int i = 0; i < mat.length; i++) {
    5. int key = i;
    6. for (int j = 0; j < mat[i].length; j++) {
    7. if (mat[i][j] == 0) {
    8. break;
    9. }
    10. key += mat[i][j] * 100; //200,401,102,203,504
    11. }
    12. map.put(key, i);
    13. }
    14. int[] arr = new int[k];
    15. int index = 0;
    16. for (Integer key1 : map.keySet()) {//map.keySet()返回map中的key值
    17. //表示将map对象的所有key值已set集合的形式返回,因为map也是无序的,且key值也是不可重复的,因此这里用set集合存储key并返回也符合规则。
    18. if (index == k) break;//循环结束的条件
    19. arr[index++] = map.get(key1);//通过key值获取map中的value,存储到arr数组中
    20. }
    21. return arr;
    22. }
    23. public static void main(String[] args) {
    24. Solution s = new Solution();
    25. int[][] arr = new int[][]{{1, 1, 0, 0, 0}, {1, 1, 1, 1, 0}, {1, 0, 0, 0, 0}, {1, 1, 0, 0, 0}, {1, 1, 1, 1, 1}};
    26. System.out.println(Arrays.toString(s.kWeakestRows(arr, 3)));
    27. }
    28. }

     

  • 相关阅读:
    关系型数据库的设计思想,20张图给你看的明明白白
    人工智能轨道交通行业周刊-第7期(2022.7.25-7.31)
    HDU_2457
    PostgreSQL的学习心得和知识总结(一百一十三)|Linux环境下Wireshark工具的安装及抓包PostgreSQL建立连接过程
    JDK8的特性
    FastJson
    InnoDB 是如何解决幻读的
    硅谷华人天才CEO被开除,是否会有奇迹发生?
    Fast-MVSNet CVPR-2020 学习笔记总结 译文 深度学习三维重建
    NowCode JZ39 数组中出现次数超过一半的数字 简单
  • 原文地址:https://blog.csdn.net/aigo_2021/article/details/126007605