Problem#
給你一個整數陣列 N
其中 N[i]
代表工作的困難度,每回合可以完成兩個或三個同等級的工作,問你最少要幾回合?
- 測資範圍:
- $1 \le N.size() \le 10^5$
- $1 \le N[i] \le 10^9$
想法#
先 sort 一次,接著數相同的數字個數存成陣列,直接模擬完成工作 $O(nm)$ (m=N[i]
)
觀察:
1 | 1 -> -1 |
可以得出規則: ans = ans + (i / 3) + (i % 3 != 0)
掃一次就得出答案 $O(n)$
- 時間複雜度: $\mathcal{O}(n\log{n})$
- 空間複雜度: $\mathcal{O}(n)$
AC Code#
賞析#
心得#
貪心規則感覺明明自己可以想到,太快看提示了,之後要像打比賽那樣先給自己時間練習QQ (下班就好懶QQ)