Search⌘ K
AI Features

Kth Smallest Number in M Sorted Lists

Explore how to efficiently find the kth smallest number across multiple sorted lists by applying k-way merge strategies. Learn to handle duplicates, boundary cases, and optimize the search for coding interview challenges.

Statement

Given a list, lists, containing mm sorted lists of integers in ascending order, and an integer k, find the kthk^{th} smallest element among all the lists.

Even if some values appear multiple times across the lists, each occurrence is treated as a unique element when determining the kthk^{th} smallest number.

If k exceeds the total number of elements across all lists, return the largest element among them. If the lists are empty, return 0.

Constraints:

  • 1m501\leq m \leq50
  • 00\leq lists[i].length 50\leq 50
  • 109-10^9\leq lists[i][j] 109\leq 10^9
  • 11\leq k 109\leq 10^9

Examples

canvasAnimation-image
1 / 5

Understand the problem

Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:

KthK^{th} Smallest Number in MM Sorted Lists

1.

What is the output if the following lists and the value of k are given as input?

list1 = [1, 4, 5]

list2 = [4, 7, 8]

list3 = [2, 6, 9]

k = 5

A.

7

B.

5

C.

6


1 / 3

Figure it out!

We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.

Sequence - Vertical
Drag and drop the cards to rearrange them in the correct sequence.

1
2
3
4

Try it yourself

Implement your solution in KthSmallest.cpp in the following coding playground.

C++
usercode > KthSmallest.cpp
#include <iostream>
#include <vector>
#include <queue>
int KSmallestNumber(std::vector<std::vector<int>> list, int k){
// Replace this placeholder return statement with your code
return -1;
}
Kth Smallest Number in M Sorted Lists