378. 有序矩阵中第K小的元素
Posted panweiwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了378. 有序矩阵中第K小的元素相关的知识,希望对你有一定的参考价值。
方法一:二分查找。
class Solution(object):
# 二分查找
def kthSmallest(self, matrix, k):
"""
:type matrix: List[List[int]]
:type k: int
:rtype: int
"""
n = len(matrix)
low, high = matrix[0][0], matrix[n - 1][n - 1]
while low < high:
# 计算矩阵中值
mid = low + int((high - low) / 2)
# 统计小于等于mid的元素个数
count = 0
i, j = 0, n - 1
while j >= 0 and i < n:
if matrix[i][j] <= mid:
count += j + 1
i += 1
else:
j -= 1
if count < 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
"""
temp = []
for i in range(len(matrix)):
temp += matrix[i]
temp.sort()
return temp[k - 1]
# 代码二
def kthSmallest(self, matrix, k):
"""
:type matrix: List[List[int]]
:type k: int
:rtype: int
"""
m = len(matrix)
n = len(matrix[0])
temp = matrix[0]
for i in range(1, m):
for j in range(n):
temp.append(matrix[i][j])
temp.sort()
return temp[k - 1]
以上是关于378. 有序矩阵中第K小的元素的主要内容,如果未能解决你的问题,请参考以下文章