68 lines
1.7 KiB
Java
68 lines
1.7 KiB
Java
//第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。
|
||
//
|
||
// 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。
|
||
//
|
||
// 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。
|
||
//
|
||
//
|
||
//
|
||
// 示例 1:
|
||
//
|
||
// 输入:people = [1,2], limit = 3
|
||
//输出:1
|
||
//解释:1 艘船载 (1, 2)
|
||
//
|
||
//
|
||
// 示例 2:
|
||
//
|
||
// 输入:people = [3,2,2,1], limit = 3
|
||
//输出:3
|
||
//解释:3 艘船分别载 (1, 2), (2) 和 (3)
|
||
//
|
||
//
|
||
// 示例 3:
|
||
//
|
||
// 输入:people = [3,5,3,4], limit = 5
|
||
//输出:4
|
||
//解释:4 艘船分别载 (3), (3), (4), (5)
|
||
//
|
||
// 提示:
|
||
//
|
||
//
|
||
// 1 <= people.length <= 50000
|
||
// 1 <= people[i] <= limit <= 30000
|
||
//
|
||
// Related Topics 贪心 数组 双指针 排序 👍 151 👎 0
|
||
|
||
package leetcode.editor.cn;
|
||
|
||
import java.util.Arrays;
|
||
|
||
//881:救生艇
|
||
class BoatsToSavePeople {
|
||
public static void main(String[] args) {
|
||
//测试代码
|
||
Solution solution = new BoatsToSavePeople().new Solution();
|
||
}
|
||
|
||
//力扣代码
|
||
//leetcode submit region begin(Prohibit modification and deletion)
|
||
class Solution {
|
||
public int numRescueBoats(int[] people, int limit) {
|
||
Arrays.sort(people);
|
||
int count = 0;
|
||
int start = 0;
|
||
int end = people.length - 1;
|
||
while (start < end) {
|
||
if (people[end] < limit && people[start] + people[end] <= limit) {
|
||
start++;
|
||
}
|
||
count++;
|
||
end--;
|
||
}
|
||
return start == end ? count + 1 : count;
|
||
}
|
||
}
|
||
//leetcode submit region end(Prohibit modification and deletion)
|
||
|
||
} |