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.
Subscribe to see which companies asked this question
两种方法
一个是很暴力的,把数据放进数组里,然后排序,返回第k个
另一种,维护一个大小为k的堆,然后输出堆顶元素
都是比较暴力的方法,而且第一种方法更快
import heapq
class Solution(object):
def kthSmallest(self, matrix, k):
m = matrix
res = []
for i in m:
for j in i:
print len(res),res
if len(res) >= k:
heapq.heappushpop(res,-j)
else:
heapq.heappush(res,-j)
return -min(res)
# res = []
# for i in m:
# res += i
# print res
# res.sort()
# return res[k-1]