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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

1. 題目

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

請你返回方陣中戰斗力最弱的 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 -> 21 -> 42 -> 13 -> 24 -> 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 -> 11 -> 42 -> 13 -> 1 從最弱到最強對這些行排序后得到 [0,2,3,1]提示: m == mat.length n == mat[i].length 2 <= n, m <= 100 1 <= k <= m matrix[i][j] 不是 0 就是 1

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/the-k-weakest-rows-in-a-matrix
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 優先隊列解題

class Solution { public:vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {int i, j, count;priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> q;//按pair的first排序,相同則按second,greater是從小到大for(i = 0; i < mat.size(); i++){count = 0;for(j = 0; j < mat[i].size(); j++){if(mat[i][j])count++;}q.push({count, i});//先按軍人數,再按序號}vector<int> ans;while(k--){ans.push_back(q.top().second);q.pop();}return ans;} };

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。