給定乙個 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...