ID | Title | Difficulty | |
---|---|---|---|
Loading... |
378. Kth Smallest Element in a Sorted Matrix
Medium
LeetCode
Array, Binary Search, Sorting, Heap (Priority Queue), Matrix
Problem
Given an n x n matrix where each of the rows and columns are sorted in ascending order, return the kth smallest element in the matrix.
Note that it is the kth smallest element in the sorted order, not the kth distinct element.
Example 1:
Input: matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8
Output: 13
Explanation: The elements in the matrix are [1,5,9,10,11,12,13,13,15], and the 8th smallest number is 13
Example 2:
Input: matrix = [[-5]], k = 1
Output: -5
Code
和LeetCode 373题类似
class Solution {
public int kthSmallest(int[][] matrix, int k) {
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> (a[0] - b[0]));
for(int i = 0; i < matrix.length; i++) {
pq.add(new int[]{matrix[i][0], i, 0});
}
while (!pq.isEmpty() && k-- > 0) {
int[] curr = pq.poll();
if(k == 0) return curr[0];
if(curr[2] == matrix[0].length - 1) continue;
pq.offer(new int[]{matrix[curr[1]][curr[2] + 1], curr[1], curr[2] + 1});
}
return -1;
}
}
按 <- 键看上一题!
377. Combination Sum IV
按 -> 键看下一题!
379. Design Phone Directory