力扣每日一题-881

题目

给定数组 people 。people[i]表示第 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)

思路

每一个船只能坐两个,要使船最少就要在不超过最大重量的前提下尽可能地去凑对,利用贪心的思维,就用最小的去匹配最大的,超出重量的就大的先上船留下更容易配对的小的

解题方法

对数组进行排序,用双指针记录当前最大值最小值的位置,进行缩减,超出重量的就大的先上船留下更容易配对的小的,循环终止为l<r,由于每一次都有人会上船所以只需要对lr指针的位置作判断即可

代码

java 复制代码
class Solution {
    public int numRescueBoats(int[] people, int limit) {
        int n=people.length;
        Arrays.sort(people);
        int l=0;
        int r=n-1;
        int ans=0;
        while(l<=r){
            if(people[l]+people[r]<=limit){
                l++;
                r--;
            }else{
                r--;
            }
            ans++;
        }
        return ans;
    }
}
相关推荐
Nil2086 分钟前
leetcode 49字母异位分组
算法·leetcode·哈希算法
weixin_3077791317 分钟前
C++代码实现MATLAB中的spectralcluster函数功能
开发语言·c++·算法·matlab
鸥梨菌Honevid19 分钟前
UVM Sequencer 深度解析:FIFO 深度、req/rsp 应答模型与高频面试坑
面试·职场和发展
行者全栈架构师24 分钟前
【鸿蒙心迹】让应用“悬浮“起来——闪控球(floatingBall)从接入到实战全链路(HarmonyOS 7.x)
前端·算法·架构
云的雨 雨的云29 分钟前
手写算法动画上位机:从排序到线性代数可视化
线性代数·算法
Pniubi1 小时前
快速排序(力扣基础)(递归)
java·数据结构·算法
roman_日积跬步-终至千里1 小时前
【数据Agent论文·分析与报告评测|27】ComInsight:原子洞察正确,组合后的结论就可靠吗?
人工智能·算法·机器学习·数据分析
Samson Bruce1 小时前
【数学之美】
线性代数·算法·概率论
studyForMokey2 小时前
【Android 面试】Paging3
android·面试·职场和发展
Mister Leon2 小时前
Nvidia Orin AGX实战之从量化到蒸馏:在 Orin 上落地的大模型压缩实战
人工智能·算法·机器学习