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