
Problem
Solution
Submissions
Kth Smallest Element
Certification: Advanced Level
Accuracy: 100%
Submissions: 1
Points: 15
Write a Java program to find the kth smallest element in a n x n matrix where each row and column is sorted in ascending order. The matrix could be considered as n sorted arrays, and your task is to find the kth smallest element among all elements in the matrix.
Example 1
- Input: matrix = [ [1, 5, 9], [10, 11, 13], [12, 13, 15] ] k = 8
- Output: 13
- Explanation: We need to find the 8th smallest element in the matrix. Listing all elements in sorted order: [1, 5, 9, 10, 11, 12, 13, 13, 15]. The 8th element is 13.
Example 2
- Input: matrix = [ [1, 3, 5], [6, 7, 12], [11, 14, 20] ] k = 4
- Output: 6
- Explanation: We need to find the 4th smallest element in the matrix. Listing all elements in sorted order: [1, 3, 5, 6, 7, 11, 12, 14, 20]. The 4th element is 6.
Constraints
- n == matrix.length
- n == matrix[i].length
- 1 ≤ n ≤ 300
- -10^9 ≤ matrix[i][j] ≤ 10^9
- All rows and columns are sorted in ascending order
- 1 ≤ k ≤ n^2
- Time Complexity: O(n * log(max-min))
- Space Complexity: O(1)
Editorial
My Submissions
All Solutions
Lang | Status | Date | Code |
---|---|---|---|
You do not have any submissions for this problem. |
User | Lang | Status | Date | Code |
---|---|---|---|---|
No submissions found. |
Solution Hints
- Consider using binary search to find the kth smallest element
- Start the binary search with the smallest element (matrix[0][0]) and the largest element (matrix[n-1][n-1])
- For each mid value in the binary search, count how many elements in the matrix are less than or equal to mid
- If the count is less than k, search in the right half
- If the count is greater than or equal to k, search in the left half and update the result
- To count elements less than or equal to mid, use the property that rows and columns are sorted
- Start from the bottom-left corner and move right if the current element is less than or equal to mid, otherwise move up