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]

本文探讨了在一个按行和列升序排列的n x n矩阵中寻找第k小元素的有效算法。通过介绍两种方法——一种是将所有元素放入数组并排序,另一种是使用大小为k的堆来维护可能的候选元素,最终返回堆顶元素作为结果。
1004

被折叠的 条评论
为什么被折叠?



