您的位置:首页 > 其它

Leetcode 378 Kth Smallest Element in a Sorted Matrix

2017-06-21 13:17 417 查看
Leetcode 375   这个问题和375是同一个问题

可以用完全一样的方法来做

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 class Solution {
public int kthSmallest(int[][] matrix, int k) {
PriorityQueue<Pairs> q = new PriorityQueue<>();

for(int j = 0; j < matrix[0].length; j++){
q.offer(new Pairs(matrix[0][j], 0, j));
}

int count = 0;
while(!q.isEmpty() && count++ < k - 1){
Pairs tmp = q.poll();
if(tmp.x == matrix.length - 1) continue;
q.offer(new Pairs(matrix[tmp.x + 1][tmp.y], tmp.x + 1, tmp.y));
}
return q.poll().val;
}

class Pairs implements Comparable<Pairs> {//这里就是用了一个class
int x, y, val;
public Pairs (int val, int x, int y) {
this.x = x;
this.y = y;
this.val = val;
}

@Override
public int compareTo (Pairs that) {
return this.val - that.val;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: