每日一道Leetcode-881. 救生艇 【双指针】

本文介绍了一种解决方案,通过排序和双指针技巧,解决如何在限制载重量的情况下,使用最少数量的船来承载一组人的问题。作者展示了如何在`numRescueBoats`函数中实现这个过程,确保最重和最轻的人能一起上船,直到所有人员都被安全运输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

class Solution {
    public int numRescueBoats(int[] people, int limit) {
        // 先排序,双指针
        //让最重的和最轻的一起
        // 刚开始没看到每艘船最多载两个人..

        Arrays.sort(people);
        int i = 0;
        int j = people.length-1;
        int ans = 0;
        while(i<=j){
            ans++;
            if(people[i]+people[j]<=limit){
                // 可以同时放最重和最轻的两个人
                i++;
            }
            //不可以同时放两个人的话,也就是最后一个人要单独做一艘船,所以i指针不动,j指针往前划
            j--;
        }
        return ans;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值