2021年11月4日 星期四

[LeetCode] 378. Kth Smallest Element in a Sorted Matrix

轉自LeetCode

Given an n x n matrix where each of the rows and columns are 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 1:

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

Example 2:

Input: matrix = [[-5]], k = 1
Output: -5

 

Constraints:

  • n == matrix.length
  • n == matrix[i].length
  • 1 <= n <= 300
  • -109 <= matrix[i][j] <= 109
  • All the rows and columns of matrix are guaranteed to be sorted in non-decreasing order.
  • 1 <= k <= n2

Solution


這題直覺想到 max heap 的方式來解

把所有的數字存到 max heap,這邊要注意的是

存的過程中,如果 max heap 的長度已經大於 k,就開始 remove

可以想成,因為是 max heap,從後面往前數過來,就是一個遞增數列

所以保持長度k,就代表第一個數字,就是要找的 kth smallest element

kotlin

沒有留言:

張貼留言