Leetcode 378 Kth Smallest Element in a Sorted Matrix

来源:互联网 发布:web软件开发方式 编辑:程序博客网 时间:2024/05/22 09:02

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;    }}}




阅读全文
0 0