LeetCode 378. 有序矩阵中第 K 小的元素(C++)
admin
2024-05-13 19:02:25
0次

思路:
首先数据只是在行和列中有序,所以应该将数据分行比较,每次对每一行的最小值进行比较,选出最小的那个数;根据这个思路采用优先队列进行比较。
原题链接:https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/description/?favorite=2ckc81c

1.题目如下:

给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。
请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。

你必须找到一个内存复杂度优于 O(n2) 的解决方案。

示例 1:

输入:matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8
输出:13

解释:矩阵中的元素为 [1,5,9,10,11,12,13,13,15],第 8 小元素是 13

示例 2:

输入:matrix = [[-5]], k = 1
输出:-5

提示:

n == matrix.length
n == matrix[i].length
1 <= n <= 300
-109 <= matrix[i][j] <= 109
题目数据 保证 matrix 中的所有行和列都按 非递减顺序 排列
1 <= k <= n2

进阶:

你能否用一个恒定的内存(即 O(1) 内存复杂度)来解决这个问题?
你能在 O(n) 的时间复杂度下解决这个问题吗?这个方法对于面试来说可能太超前了,但是你会发现阅读这篇文章( this paper )很有趣。

2.代码如下:

class Solution {
public:
//思路一:把矩阵中的元素放入数组,然后排序 时间复杂度O(n2logn) 空间复杂度O(n2)//思路二:优先队列实现分治法,在归并排序的过程中实现。
/*从n个有序链表中找到第k小的数就类似于分治法中的归并排序利用了每一行的元素都有序的特征,只要每次都对所有行的最小值进行比较,就能得出真正的最小值每次找到n行的最小的一个,利用优先队列
*/int kthSmallest(vector>& matrix, int k) {// 结构point可以存储值、坐标信息struct point{int val,x,y;//构造函数point(int val,int x,int y):val(val),x(x),y(y){}//实现排序bool operator>(const point& a)const{return this->val>a.val;}};//优先队列实现小根堆,每次都从小根堆中找一个最小的出来,然后再补上该行的下一个元素进入队列,直到找到第k小的元素priority_queue,greater> que;int n=matrix.size();for (int i=0;ique.emplace(matrix[i][0],i,0);}// 将所有行的其中最小的元素提取出,该行下一个就补进到队列直到一行的元素全部遍历过;for (int i=0;ipoint now=que.top();que.pop();if (now.y!=n-1) {que.emplace(matrix[now.x][now.y+1],now.x,now.y+1);}}return que.top().val;}
};

相关内容

热门资讯

AI做攻略、“双向奔赴”……国... 本文转自:人民网人民网记者 许维娜今年国庆假期,AI(人工智能)成了不少年轻人的“旅行搭子”。行前做...
合肥的这个“梗”, 翻篇了 社交平台的评论区,曾长期流传一句专属于合肥的黑色幽默。有人问合肥哪里好玩,本地网友半开玩笑地回复:合...
7万+旅游中高层都在的群,今天... 做旅游这行,资源卡位、渠道互通、项目落地——往往就差一个“对的机会”。我们的行业社群已聚集70,00...
一场帐篷音乐节,如何让井研从“... 帐篷音乐节现场封面新闻记者 周洪攀10月的研溪湿地,晚风里裹着柑橘的清甜与民谣的回响。夜幕降临,10...
白鹤翩翩落星愿,上海迪士尼度假... 10月9日,世界候鸟日前夕,上海迪士尼度假区星愿公园的湖风里多了一分白鹤的灵动。三座白鹤雕塑正式揭幕...
成都锦江边赏初秋枫叶飘飘 目前,成都锦江边国华街枫叶树红了。近年来,国华街附近的几条街都栽种了红枫树,是城区较集中看枫叶的点位...
GBTA:商务旅行正在复苏,但... 亚太正在成为全球商务旅行增长的重要引擎。在经历疫情后的快速反弹之后,全球商务旅行正在进入一个新的增长...
从景区焕新到节赛引流 邹城双节... 齐鲁网·闪电新闻10月9日讯 中秋、国庆“双节”假期,邹城市文化和旅游局提前谋划、周密部署,立足自身...
江山如此多娇 且看石楼今朝 金秋十月,黄河岸畔秋意盎然,丰收盛会喜迎国庆。本次石楼国庆文旅活动以“江山如此多娇,且看石楼今朝”为...
海南国庆假期接待游客475.4... 2026年国庆假期,海南接待游客475.40万人次,较2025年增长13.1%,较2024年增长15...