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>();
heap.add(new kthsNode(0, 0, matrix[0][0]));
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;
heap.add(new kthsNode(xx, yy, matrix[xx][yy]));
}
}
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;
}


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

LeetCode 378. Kth Smallest Element in a Sorted Matrix 解题报告

LeetCode 378. Kth Smallest Element in a Sorted Matrix 解题报告

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 ...

378. Kth Smallest Element in a Sorted Matrix-binary search/heap

Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth ...

LeetCode:378 Kth Smallest Element in a Sorted Matrix

378. Kth Smallest Element in a Sorted MatrixGiven a n x n matrix where each of the rows and columns ...
• Wisimer
• 2016年08月13日 23:33
• 206

[leetcode] 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 ...

355. Design Twitter \ 378. Kth Smallest Element in a Sorted Matrix

Design Twitter 题目描述 代码实现 Kth Smallest Element in a Sorted Matrix 题目描述 代码实现355. Design Twitter题目描述Des...

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