881.救生艇

目录

题目

给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。

每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。

返回 承载所有人所需的最小船数 。

过程

cpp 复制代码
class Solution {
public:
    int numRescueBoats(vector<int>& people, int limit) {
        sort(people.begin(),people.end());
        int sum=0;//船的计数
        int l=0;
        int r=people.size()-1;
        //最小的和最大的坐船,如果超重了,那么就是最大的独自一条船,
        while(l<r){
            if(people[l]+people[r]<limit){
                sum++;
                r--;
                l++;
            }else if(people[l]+people[r]>limit){
                sum++;
                r--;
            }else{
                sum++;
                l++;
                r--;
            }
        }
        return sum;
    }
};

发现最后总是会少一条船,可能忘记最后一条了。

推演了一下,确实l和r重合的时候,还有一个人,一条船没有计数

再最后加一个出while的判断。

cpp 复制代码
class Solution {
public:
    int numRescueBoats(vector<int>& people, int limit) {
        sort(people.begin(),people.end());
        int sum=0;//船的计数
        int l=0;
        int r=people.size()-1;
        //最小的和最大的坐船,如果超重了,那么就是最大的独自一条船,
        while(l<r){
            if(people[l]+people[r]<limit){
                sum++;
                r--;
                l++;
            }else if(people[l]+people[r]>limit){
                sum++;
                r--;
            }else{
                sum++;
                l++;
                r--;
            }
            if(l==r){
                sum++;
                l++;
            }
        }
        return sum;
    }
};

感觉双指针主要难点就是想清楚什么时候哪一边收敛。

相关推荐
三毛的二哥11 小时前
BEV:典型BEV算法总结
人工智能·算法·计算机视觉·3d
南宫萧幕12 小时前
自控PID+MATLAB仿真+混动P0/P1/P2/P3/P4构型
算法·机器学习·matlab·simulink·控制·pid
故事和你9113 小时前
洛谷-数据结构1-4-图的基本应用1
开发语言·数据结构·算法·深度优先·动态规划·图论
我叫黑大帅14 小时前
为什么map查找时间复杂度是O(1)?
后端·算法·面试
炽烈小老头14 小时前
【每天学习一点算法 2026/04/20】除自身以外数组的乘积
学习·算法
skilllite作者14 小时前
AI agent 的 Assistant Auto LLM Routing 规划的思考
网络·人工智能·算法·rust·openclaw·agentskills
py有趣16 小时前
力扣热门100题之不同路径
算法·leetcode
_日拱一卒16 小时前
LeetCode:25K个一组翻转链表
算法·leetcode·链表
啊哦呃咦唔鱼16 小时前
LeetCodehot100-394 字符串解码
算法
小欣加油16 小时前
leetcode2078 两栋颜色不同且距离最远的房子
数据结构·c++·算法·leetcode·职场和发展