题目在这:https://leetcode-cn.com/problems/boats-to-save-people/
思路分析:
根据题目描述,一条船中最多能承载两个人。显然,最重的和最轻的人在一条船上是最优组合。
那么可以在排序后设置两个指针,分别指向头和尾,即指向了最轻的和最重的两个人。
这时候,如果最轻的和最重的两个人的体重和没有超载,则让他们都上船,指针向中间移动,
如果两人的体重相加超载了,则只让最重的人上船。
完整代码
class Solution:
def numRescueBoats(self, people: List[int], limit: int) -> int:
people.sort()
i = 0
j = len(people) -1
res = 0
while i <= j:
if people[i] + people[j] <= limit:
res +=1
j -= 1
i += 1
else:
res +=1
j -=1
print(res)
return res
提交: