2022-4-15 面试高频题
给你一个 n x n
矩阵 matrix
,其中每行和每列元素均按升序排序,找到矩阵中第 k
小的元素。
请注意,它是 排序后 的第 k
小元素,而不是第 k
个 不同 的元素。
你必须找到一个内存复杂度优于 O(n2)
的解决方案。
1 class Solution { 2 public int kthSmallest(int[][] matrix, int k) { 3 PriorityQueue<int[]> queue=new PriorityQueue<>((a,b)->(a[0]-b[0])); 4 int n=matrix.length; 5 for (int i=0;i<n;i++) { 6 queue.offer(new int[]{matrix[i][0],i,0}); 7 } 8 9 for (int i=0;i<k-1;i++) { 10 int[] cur=queue.poll(); 11 if (cur[2]<n-1) queue.offer(new int[]{matrix[cur[1]][cur[2]+1],cur[1],cur[2]+1}); 12 } 13 return queue.poll()[0]; 14 } 15 16 }
思路:相当于归并排序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具