有序矩陣中第K小的元素

2021-10-03 22:58:36 字數 504 閱讀 9878

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

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

示例:matrix = [

[ 1, 5, 9],

[10, 11, 13],

[12, 13, 15]

],k = 8,

返回 13。

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

分析:因為是整數,可使用二分法,用[low, high]這個閉區間去夾逼第k小元素,當low等於high時即找到答案。計數時矩陣元素總是和中間數mid比較,較小則計入,計數大於k說明high應該變小,反之low變大,另外注意邊界調節即可。

class

solution}if

(count < k) low = mid +1;

else high = mid;

}return low;

}}

有序矩陣中第k小元素

題目 給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第 k 小的元素。請注意,它是排序後的第 k 小元素,而不是第 k 個不同的元素。看到有序就會想到二分查詢,而本題的二分查詢十分的有趣。根據這個矩陣的定義,我們知道,最小的元素是最左上角元素,最大的元素是最左下角元素。由此...

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

給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。請注意,它是排序後的第k小元素,而不是第k個元素。示例 matrix 1,5,9 10,11,13 12,13,15 k 8,返回 13。public boolean guess int matrix,int mi...

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

直接將所有的元素合成乙個列表,排序後取出第k小的元素即可。具體 如下 class solution def kthsmallest self,matrix list list int k int int my list for tmp in matrix my list tmp my list so...