码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【力扣】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. }

     

  • 相关阅读:
    Spring Boot Event Bus用法
    浅谈一下Android开发项目组件化之后发布到远程仓库的相关内容
    食品饮料行业B2B商城系统:加速行业数字化转型,提升B2B平台交易效率
    初阶数据结构学习记录——열둘 排序(1)
    FreeRTOS移植-教你修改portable(S3C2440、ARM9、gcc)
    【GEE】8、Google 地球引擎中的时间序列分析【时间序列】
    捆绑保险的同时,平安汽车金融还站着把利息收了?
    练习题57:接口的语法特征
    【力扣每日一题】2023.9.7 修车的最少时间
    STC 32位8051单片机开发实例教程 二 I/O工作模式及其配置
  • 原文地址:https://blog.csdn.net/aigo_2021/article/details/126007605
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号