973. K Closest Points to Origin - Medium
前往題目
這題之前寫過心得,照搬一下
心得
- 這題非常妙,用到的資料結構也不一樣,只要知道如何使用就很簡單
- 使用
MinHeap
或是MaxHeap
就可以完美解決 - 使用
MaxHeap
的時間複雜度更好一點 PriorityQueue
會根據Comparator
來排序,排序時間是logN
(因為使用heap
,樹結構),N是項數
思路 (以MinHeap為例子)
- 新建一個
MinHeap
- 把
point
都放入minHeap
- 然後就取出
k
個回傳,因為MinHeap
是由小到大排序,使用Heap
的原因是可以在插入數值時可以logN
插入,使用Array
會是N
次
以下使用PriorityQueue
來模擬MinHeap
Code
MinHeap做法(NlogN)
MaxHeap作法(NlogK)
只改了compare
的順序,以及q
超過k size
就去掉head
,因為head
永遠是最大的,但我們不需要
973. K Closest Points to Origin - Medium
https://f88083.github.io/2023/12/13/973-K-Closest-Points-to-Origin-Medium/