Kth Smallest Element in a Sorted Matrix — LeetCode 378 Python Solution

MediumArrayBinary SearchMatrixSortingHeap (Priority Queue)
Problem
#378
Reading time
4 min

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

Python
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 left

Complexity

MeasureComplexity
TimeO(log n) or O(n log n)
SpaceO(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.

Stuck on problems like this in a live interview?

Stealth Interview is a desktop app for macOS and Windows. It reads the problem off your screen and returns a working solution with a step-by-step explanation and its time and space complexity — invisible to screen sharing.

Get Stealth Interview