Problem#
題目給你一個整數陣列 people[i]
是每個人的重量,今天要搭船過河,每條船最多載重 limit
,一艘船最多載兩個人,問你最少需要幾條船。
1 <= people.length <= 5 * 10^4
1 <= people[i] <= limit <= 3 * 10^4
想法#
直覺想法是 sort 之後從小的開始挑,盡量挑滿,但這樣不是最佳解,因為小配小不一定是最佳,因為它可能可以跟大配且重量 <= limit
所以解法是: 從大的開始搭船,假如大 + 小 <= limit 那就一起搭船
- 時間複雜度: $\mathcal{O}(n\log{n})$ (sort)
- 空間複雜度: $\mathcal{O}(n)$