# 378. Kth Smallest Element in a Sorted Matrix

Given a n x n matrix where each of the rows and columns are sorted in ascending order, find 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:

matrix = [
[ 1,  5,  9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,

return 13.


Note:
You may assume k is always valid, 1 ≤ k ≤ n2.

    public int kthSmallest(int[][] matrix, int k) {
int m = matrix.length;
if (m == 0)
return 0;
int n = matrix[0].length;
int cnt = 0;
boolean[][] used = new boolean[m][n];
PriorityQueue<kthsNode> heap = new PriorityQueue<kthsNode>();
used[0][0] = true;
kthsNode node = null;
int[] xoff = { 0, 1 };
int[] yoff = { 1, 0 };
while (cnt < k) {
node = heap.poll();
int x = node.x;
int y = node.y;
for (int i = 0; i < 2; i++) {
int xx = x + xoff[i];
int yy = y + yoff[i];
if (xx >= 0 && xx < m && yy >= 0 && yy < n && !used[xx][yy]) {
used[xx][yy] = true;
}
}
cnt++;
}
return node.val;
}
static class kthsNode implements Comparable<kthsNode> {
int x, y;
int val;
public kthsNode(int x, int y, int val) {
this.x = x;
this.y = y;
this.val = val;
// TODO Auto-generated constructor stub
}

@Override
public int compareTo(kthsNode o) {
// TODO Auto-generated method stub
return val - o.val;
}


• 本文已收录于以下专栏：

举报原因： 您举报文章：378. Kth Smallest Element in a Sorted Matrix 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)