日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode1337. 方阵中战斗力最弱的 K 行(优先队列)

發(fā)布時間:2023/11/29 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode1337. 方阵中战斗力最弱的 K 行(优先队列) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

給你一個大小為 m * n 的方陣 mat,方陣由若干軍人和平民組成,分別用 1 和 0 表示。

請你返回方陣中戰(zhàn)斗力最弱的 k 行的索引,按從最弱到最強排序。

如果第 i 行的軍人數(shù)量少于第 j 行,或者兩行軍人數(shù)量相同但 i 小于 j,那么我們認為第 i 行的戰(zhàn)斗力比第 j 行弱。

軍人 總是 排在一行中的靠前位置,也就是說 1 總是出現(xiàn)在 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]
解釋:
每行中的軍人數(shù)目:
行 0 -> 2
行 1 -> 4
行 2 -> 1
行 3 -> 2
行 4 -> 5
從最弱到最強對這些行排序后得到 [2,0,3,1,4]

代碼

class Solution {public int[] kWeakestRows(int[][] mat, int k) {int i=0;PriorityQueue<int[]> priorityQueue=new PriorityQueue<>((o1, o2) -> o1[0]==o2[0]?o1[1]-o2[1]:o1[0]-o2[0]);//排序規(guī)則for(int[] c:mat){int ans=0;for(int d:c) if(d==0) break; else ans++;//統(tǒng)計士兵個數(shù)priorityQueue.offer(new int[]{ans,i});i++;}int[] res=new int[k];for(int j=0;j<k;j++) res[j]=priorityQueue.poll()[1];//選出戰(zhàn)力最低的前n名return res;} }

總結(jié)

以上是生活随笔為你收集整理的leetcode1337. 方阵中战斗力最弱的 K 行(优先队列)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。