标签:
/* * 378. Kth Smallest Element in a Sorted Matrix * 2016-8-17 by Mingyang * 一开始想用priority queue,但是发现时间太长,后来对于这种类型的matrix, * 就利用了240的方法计算比他小的个数,再利用k与这个结果的比较关系,进一步 * 缩小所需要的时间,总时间是nlogn */ public int kthSmallest(int[][] matrix, int k) { int n = matrix.length; int lo = matrix[0][0], hi = matrix[n - 1][n - 1]; while (lo <= hi) { int mid = lo + (hi - lo) / 2; int count = getLessEqual(matrix, mid); if (count < k) lo = mid + 1; else hi = mid - 1; } return lo; } private int getLessEqual(int[][] matrix, int val) { int res = 0; int n = matrix.length, i = n - 1, j = 0; while (i >= 0 && j < n) { if (matrix[i][j] > val) i--; else { res += i + 1; j++; } } return res; }
378. Kth Smallest Element in a Sorted Matrix
标签:
原文地址:http://www.cnblogs.com/zmyvszk/p/5786178.html