Merge K Sorted Arrays
The problem
You are given k sorted arrays, each of size k. Merge all the arrays into one sorted array and return it.
You should use an efficient algorithm with O(k² log k) time complexity.
**Input: **k = 3, arr = [[1,2,3],[4,5,6],[7,8,9]] Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
**Input: **k = 4, arr = [[1,2,3,4],[2,2,3,4],[5,5,6,6],[7,8,9,9]] **Output: **[1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8, 9, 9]
**Input: **k = 1, arr = [[10]]
- 1 <= k <= 100
- Each row arr[i] is sorted in ascending order
- Total elements = k × k (i.e., the matrix is k x k)
cpp
class Solution {
public:
vector<int> mergeKSortedArrays(vector<vector<int>>& arr, int k) {
// Your code goes here
}
};java
class Solution {
public List<Integer> mergeKSortedArrays(int[][] arr, int k) {
// Your code goes here
}
}python
class Solution:
def mergeKSortedArrays(self, arr, k):
# Your code goes herejavascript
class Solution {
mergeKSortedArrays(arr, k) {
// Your code goes here
}
}csharp
class Solution {
public List<int> MergeKSortedArrays(int[][] arr, int k) {
// Your code goes here
}
}go
func mergeKSortedArrays(arr [][]int, k int) []int {Stuck? Show a way to structure it+
- 01Push the first element of each non-empty array into a min-heap.
- 02Pop the smallest item into the answer.
- 03Push its successor from the same array.
- 04Repeat until the heap is empty.
- 05Store value, array index, and element index.
Reference answer
Then expect these follow-ups
How would you merge linked lists instead?
Tests: data-structure transfer
When is divide-and-conquer merging attractive?
Tests: tradeoffs
Hiring now
Software engineer roles are open right now
landed applies to roles like these for you, on each company’s own site, with answers written for the role.

Senior Software Engineer -.NET
Tyler Technologies · Annapolis, Maryland

Software Development Engineer II
SaaS Labs · Bengaluru, Karnataka, India

Advanced Software Engineer - Product Architect (Legal, Safety, and Risk)
Metropolitan Transportation Authority · New York, NY
Next question