Solution1 双指针 + 贪心

  • 时间复杂度 $O(n * logn)$

  • 空间复杂度 $O(1)$

要使需要的船数尽可能地少,应当使载两人的船尽可能地多。 考虑体重最轻的人

  • 若他不能与体重最重的人同乘一艘船,那么体重最重的人无法与任何人同乘一艘船,此时应单独分配一艘船给体重最重的人

  • 若他能与体重最重的人同乘一艘船,那么他能与其余任何人同乘一艘船,为了尽可能地利用船的承载重量,选择与体重最重的人同乘一艘船是最优的

所以,我们要尽可能的把最重和最轻的人放在一起。

先小到大排序。

从右往左遍历重的人,如果同时带上左边轻的人,则 l++

Last updated