在一个排序矩阵中找从小到大的第 k 个整数。
排序矩阵的定义为:每一行递增,每一列也递增。
样例如下:
给出k = 4和如下排序数组
[
[1, 5, 7],
[3, 6, 8],
[4, 9, 10]
]
返回结果为5
有两个思路,1)直接按从小到大顺序找,找K次,每次找最小的元素,时间复杂度为O(k*N); 2)采用最小堆,时间复杂度为O(K*logN);最小堆用优先队列实现
#include<iostream>
#include<vector>
#include<string>
#include<queue>
#include<utility>
using namespace std;
vector<vector<int>> *ma;
class cmp
{
public:
bool operator()(const pair<