給定乙個n x n
矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k
小的元素。
請注意,它是排序後的第k
小元素,而不是第k
個不同的元素。
示例:
matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],k = 8,
返回 13。
思路 : 在matrix[0][0]~matrix[length-1][length-1]
之間二分查詢乙個數n, 遍歷陣列如果小於等於n
的個數大於k, 則右邊界縮小為n,反之左邊界放大到n+1
public
class
q378
else
}return left;
}private
boolean
check
(int
m ,
int k ,
int n)
}else
}return sum >= k;
}public
static
void
main
(string[
] args),,
},8)
);}}
378 有序矩陣中第K小的元素
378.有序矩陣中第k小的元素 給定乙個n x n矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小的元素。請注意,它是排序後的第k小元素,而不是第k個不同的元素。示例 matrix 1,5,9 10,11,13 12,13,15 k 8,返回 13。你可以假設 k 的值永遠是有效的,1 k ...
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 ...
378 有序矩陣中第K小的元素
題目 給定乙個 n x n 矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第 k 小的元素 思路及演算法 由題目給出的性質可知,這個矩陣的每一行均為乙個有序陣列。問題即轉化為從這 n 個有序陣列中找第 k 大的數,可以想到利用歸併排序的做法,歸併到第 k 個數即可停止。一般歸併排序是兩個陣列歸併...