Leetcode 1962 - Remove Stones to Minimize the Total

題目

Problem#

給你一個整數陣列 N[i] 代表石頭的個數,再給你一個數字 k 代表操作數,操作方法如下:

  • 選一堆石頭 N[i] 然後從裡面拿走 floor(N[i]/2.0)
    問你最後拿完石頭的總和最小為多少?

  • $1 \le N.size() \le 10^5$

  • $1 \le N[i] \le 10^4$

  • $1 \le k \le 10^5$

想法#

用 heap 維護石頭數量,每次拿最大然後減去 floor(num / 2.0) 然後塞回 heap ,最後加總即可

  • 時間複雜度: $\mathcal{O}(n\log{n})$
  • 空間複雜度: $\mathcal{O}(n)$

AC Code#

心得#

這題應該是 Easy