LeetCode-day08-881. 救生艇
- 题目描述
- 示例
- 示例1:
- 思路
- 代码
题目描述
给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。
每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。
返回 承载所有人所需的最小船数 。
示例
示例1:
输入:people = [1,2], limit = 3
输出:1
解释:1 艘船载 (1, 2)
输入:people = [3,2,2,1], limit = 3
输出:3
解释:3 艘船分别载 (1, 2), (2) 和 (3)
输入:people = [3,5,3,4], limit = 5
输出:4
解释:4 艘船分别载 (3), (3), (4), (5)
思路
采用排序+贪心策略。使用两个指针进行前后判断。中等题型!
代码
public int numRescueBoats(int[] people, int limit) {int ans =0;Arrays.sort(people);int l = 0,r = people.length-1;while (l <= r){if (people[l] + people[r] <= limit){l++;}r--;ans++;}return ans;}