Kth Smallest Element in a Sorted Matrix — LeetCode 378 Python Solution
- Problem
- #378
- Pattern
- Heap / Priority Queue
- Reading time
- 4 min
- Source
- leetcode.com
The problem
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. Note that it is the kth smallest element in the sorted order, not the kth distinct element.
Example
- Input
- matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8
- Output
- 13
- Explanation
- The elements in the matrix are [1,5,9,10,11,12,13,13,15], and the 8th smallest number is 13
Python solution
class Solution:
def kthSmallest(self, matrix: List[List[int]], k: int) -> int:
def check(matrix, mid, k, n):
count = 0
i, j = n - 1, 0
while i >= 0 and j < n:
if matrix[i][j] <= mid:
count += i + 1
j += 1
else:
i -= 1
return count >= k
n = len(matrix)
left, right = matrix[0][0], matrix[n - 1][n - 1]
while left < right:
mid = (left + right) >> 1
if check(matrix, mid, k, n):
right = mid
else:
left = mid + 1
return leftComplexity
| Measure | Complexity |
|---|---|
| Time | O(log n) or O(n log n) |
| Space | O(1) auxiliary |
Pattern: Heap / Priority Queue
Keep only the best k elements, or always pull the smallest, in log time. LeetCode 378. Kth Smallest Element in a Sorted Matrix is filed here because LeetCode tags it Heap (Priority Queue), which is the vocabulary this hub collects.
The heap / priority queue guide has the Python template for the pattern and the 163 LeetCode problems that use it.
Related problems
Frequently asked questions
- How hard is LeetCode 378. Kth Smallest Element in a Sorted Matrix?
- LeetCode 378. Kth Smallest Element in a Sorted Matrix is rated Medium on LeetCode.
- What topics does LeetCode 378. Kth Smallest Element in a Sorted Matrix cover?
- LeetCode 378. Kth Smallest Element in a Sorted Matrix is tagged Array, Binary Search, Matrix, Sorting and Heap (Priority Queue) on LeetCode.