378. Kth Smallest Element in a Sorted Matrix

原创 2016年08月29日 23:39:00

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.

思路:

使用PriorityQueue进行优先级排序,由于矩阵每行每列都是递增,所以每次往PriorityQueue中添加右边和下面一位的数字

    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 解题报告

leetCode No.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 kt...

[leetcode] 378. Kth Smallest Element in a Sorted Matrix 解题报告

题目链接: https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/ Given a n x n matrix ...

LeetCode笔记:378. Kth Smallest Element in a Sorted Matrix

在行列分别升序的矩阵中找第 k 小的元素

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

[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个字)