【Leetcode】Kth Smallest Element in a Sorted Matrix


タイトルリンク:https://leetcode.com/problems/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.
考え方:
sizeがkの最大スタックを維持し、最小のk要素を格納します. 
ループ配列kより大きい要素にループした後、各要素がスタックトップより小さいかどうかを判断し、小さい場合はスタックに参加し、スタックsizeを維持します.
遍歴が完了すると、スタックトップはk番目の要素です.
アルゴリズム:
	public int kthSmallest(int[][] matrix, int k) {
		PriorityQueue heap = new PriorityQueue(new Comparator() {
			public int compare(Integer a0, Integer a1) {
				if(a0>a1){
					return -1;
				}else if(a0 k) {
					if (matrix[i][j] < heap.peek()) {
						heap.poll();
						heap.offer(matrix[i][j]);
					}
				} else {
					heap.offer(matrix[i][j]);
				}
			}

		}

		return heap.peek();
	}