mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 20:26:07 -04:00
Update k_smallest_matrix.py
This commit is contained in:
parent
66cf6cc427
commit
f02da2c80e
@ -2,27 +2,22 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# author: bt3gl
|
# author: bt3gl
|
||||||
|
|
||||||
# Given an n x n matrix where each of the rows and columns is sorted
|
|
||||||
# in ascending order, return the kth smallest element in the matrix.
|
|
||||||
|
|
||||||
def kth_smallest(self, matrix, k) -> int:
|
|
||||||
|
|
||||||
n = len(matrix)
|
def kth_smallest(matrix, k) -> int:
|
||||||
|
|
||||||
min_heap = []
|
min_heap = []
|
||||||
|
|
||||||
for r in range(min(k, n)):
|
for row in range(min(k, len(matrix))):
|
||||||
|
min_heap.append((matrix[row][0], row, 0))
|
||||||
min_heap.append((matrix[r][0], r, 0))
|
|
||||||
|
|
||||||
heapq.heapify(min_heap)
|
heapq.heapify(min_heap)
|
||||||
|
|
||||||
while k:
|
while k:
|
||||||
|
|
||||||
element, r, c = heapq.heappop(min_heap)
|
element, row, col = heapq.heappop(min_heap)
|
||||||
|
if col < len(matrix) - 1:
|
||||||
if c < n - 1:
|
heapq.heappush(min_heap, (matrix[row][cow + 1], row, col + 1))
|
||||||
heapq.heappush(min_heap, (matrix[r][c + 1], r, c + 1))
|
|
||||||
|
|
||||||
k -= 1
|
k -= 1
|
||||||
|
|
||||||
return element
|
return element
|
||||||
|
Loading…
x
Reference in New Issue
Block a user