leetcode 378 有序矩陣中第K小的元素

2021-08-21 06:01:33 字數 847 閱讀 7593

給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。

請注意,它是排序後的第k小元素,而不是第k個元素。

示例:

matrix = [

[ 1, 5, 9],

[10, 11, 13],

[12, 13, 15]

],k = 8,

返回 13。

說明:

你可以假設 k 的值永遠是有效的, 1 ≤ k ≤ n2 。

class solution 

}return q.top();

}};

大根堆,每次放入資料都檢查是否數量超過k,是的話把最大的數刪掉,知道只有k個數,取最後的那個。

class solution {

public:

int kthsmallest(vector>& matrix, int k) {

int n = matrix.size();

int bgn = matrix[0][0], end = matrix[n-1][n-1];

while(bgn < end) {

int mid = (bgn + end) / 2;

int cnt = 0;

for(int i=0; i二分法,upper_bound函式返回的是容器中第乙個比中值元素大的元素的迭代器,通過與起始迭代器相減,得到的是容器中小於等於中值元素的元素個數。例如[1,2,4,8],中值為4,那麼upper_bound返回的是指向8的迭代器,減去起始迭代器,會得到3,這是等於小於4的元素個數。

leetcode 378 有序矩陣中第K小的元素

給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。請注意,它是排序後的第k小元素,而不是第k個元素。示例 matrix 1,5,9 10,11,13 12,13,15 k 8,返回 13。說明 你可以假設 k 的值永遠是有效的,1 k n2 解題方法 使用優先佇列...

LeetCode 378 有序矩陣中第K小的元素

給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。請注意,它是排序後的第k小元素,而不是第k個元素。示例 matrix 1,5,9 10,11,13 12,13,15 k 8,返回 13。說明 你可以假設 k 的值永遠是有效的,1 k n2 此題用二分法。給定二維...

LeetCode378 有序矩陣中第k小的元素

題目 給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。請注意,它是排序後的第k小元素,而不是第k個元素。思路 直接求解矩陣中的第8小元素很難,我們可以用二分法設定乙個值mid,檢視mid值是否是矩陣第8小元素。具體思路為 1.首先設定mid的初值為矩陣matri...