LeetCode 救生艇

题目地址: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
}
相关推荐
超级无敌大学霸1 小时前
二分查找和辗转相除法
c语言·算法
夏鹏今天学习了吗1 小时前
【LeetCode热题100(69/100)】字符串解码
linux·算法·leetcode
普通网友2 小时前
内存对齐与缓存友好设计
开发语言·c++·算法
小白程序员成长日记2 小时前
2025.11.18 力扣每日一题
算法·leetcode·职场和发展
Cathyqiii2 小时前
传统扩散模型 VS Diffusion-TS
人工智能·算法
海边夕阳20062 小时前
【每天一个AI小知识】:什么是逻辑回归?
人工智能·算法·逻辑回归
普通网友2 小时前
C++编译期数据结构
开发语言·c++·算法
Gorgous—l2 小时前
数据结构算法学习:LeetCode热题100-图论篇(岛屿数量、腐烂的橘子、课程表、实现 Trie (前缀树))
数据结构·学习·算法
im_AMBER2 小时前
算法笔记 13 BFS | 图
笔记·学习·算法·广度优先