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 }

思路:相当于归并排序。

posted on 2022-04-15 14:11  阿ming  阅读(13)  评论(0编辑  收藏  举报

导航