题目地址:https://leetcode.cn/problems/boats-to-save-people/description/
给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。
每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。
返回 承载所有人所需的最小船数 。
go
// 思路:排序 双指针
// 如果 people[left]+people[right] > limit 说明右指针的人体重太大单独需要一个船
// 否则 people[left]和 people[right] 可以共上一艘船
func numRescueBoats(people []int, limit int) int {
sort.Ints(people)
ans := 0
left := 0
right := len(people) - 1
for left <= right {
if people[left]+people[right] > limit {
right--
ans++
} else {
left++
right--
ans++
}
}
return ans
}