LeetCode-day08-881. 救生艇

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;
    }

你可能感兴趣的:(LeetCode题目,leetcode,算法,java,贪心算法)