文巾解题 881. 救生艇
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文巾解题 881. 救生艇相关的知识,希望对你有一定的参考价值。
1 题目描述
2 解题思路:贪心
我们把重量从低到高排序,尽量让最轻的人和最重的人在一艘船上。如果最轻的+最终的仍然比limit重,那么最重的人单独一艘船
2.1 递归解决贪心
class Solution:
def numRescueBoats(self, people: List[int], limit: int) -> int:
people.sort()
def f(begin,end):
print(begin,end)
if(begin>end):
return 0
if(begin==end):
return 1
if(people[begin]+people[end]<=limit):
return 1+f(begin+1,end-1)
if(people[begin]+people[end]>limit):
return 1+f(begin,end-1)
return(f(0,len(people)-1))
2.2 双指针解决贪心
class Solution:
def numRescueBoats(self, people: List[int], limit: int) -> int:
people.sort()
ret=0
begin=0
end=len(people)-1
while(begin<=end):
#begin=end不用特判,因为无论如何就剩下这一个了,船的数量肯定加一,所以不用管他是在if语句还是else语句里面
if(people[begin]+people[end]<=limit):
begin+=1
end-=1
else:
end-=1
ret+=1
return(ret)
以上是关于文巾解题 881. 救生艇的主要内容,如果未能解决你的问题,请参考以下文章