[LeetCode]378. Kth Smallest Element in a Sorted Matrix
378. Kth Smallest Element in a Sorted Matrix
二分搜索
class Solution(object):
def kthSmallest(self, matrix, k):
"""
:type matrix: List[List[int]]
:type k: int
:rtype: int
"""
low, high = matrix[0][0], matrix[-1][-1]
while low < high:
mid = (low + high) // 2
cnt = 0
j = len(matrix[0]) - 1
for i in range(len(matrix)):
while j >= 0 and matrix[i][j] > mid:
j -= 1
cnt += j + 1
if cnt < k:
low = mid + 1
else:
high = mid
return low
class Solution(object):
def kthSmallest(self, matrix, k):
"""
:type matrix: List[List[int]]
:type k: int
:rtype: int
"""
# Time: O((logn)*(log(max-min)))
# Space: O(1)
l = matrix[0][0]
r = matrix[-1][-1]
while l < r:
cnt = 0
mid = (l+r)/2
for row in matrix:
cnt += bisect.bisect_right(row, mid)
if cnt < k:
l = mid + 1
else:
r = mid
return l
关注公众号:数据结构与算法那些事儿,每天一篇数据结构与算法