给定一个 n x n 矩阵,每一行和每一列都按照升序排序,找出矩阵中的第 k 小元素。
注意是需要找将所有元素有序排列的第 k 小元素,而不是第 k 个互不相同的元素。
样例
样例1
输入:
[[ 1, 5, 9],[10, 11, 13],[12, 13, 15]]
8
输出: 13
样例2
输入:
[[-5]]
1
输出: -5
挑战
如果 k << n^2,最好的算法是什么?
如果 k ~ n^2 呢?
注意事项
你可以认为 k 始终是合法的,也就是说,1 ≤ k ≤ n^2。
class Solution {
public:
/**
* @param matrix: List[List[int]]
* @param k: a integer
* @return: return a integer
*/
int kthSmallest(vector<vector<int>> &matrix, int k) {
// write your code here
vector<int> nums;
for(int i = 0; i < matrix.size(); i++)
{
for(int j = 0; j < matrix[i].size(); j++)
{
nums.push_back(matrix[i][j]);
}
}
sort(nums.begin(), nums.end());
return nums[k-1];
}
};