leetcode 881.救生艇

思路:经典的贪心套路'

其实就是对于每个数组的元素进行从最小或者从最大的元素开始进行遍历,或者说我们首先对于数组进行倒序或者是升序进行排序之后,再在两端进行双指针的筛选。

题目中又说规定一个船里面只能够装两个人,所以我们在遍历的时候,尽最大的可能进行装载两个人,也就是说,我们每次都需要从两端进行筛选,如果说两端的人数的重量是可以承载的,这个时候每一个船也就是说可以装载了两个人,这样可以最大限度的减少船只的数量。所以我们就可以用这样的方法进行贪心即可。

复制代码
class Solution {
    public int numRescueBoats(int[] people, int limit) {
        int n=people.length;
        int l=0;
        int r=n-1;
        Arrays.sort(people);
        int cnt=0;
        while(l<r){
            if(people[l]+people[r]<=limit){
                cnt++;
                l++;
                r--;
            }
            else{
                cnt++;
                r--;
            }
        }
        if(l==r){
            if(people[l]<=limit)
            cnt++;
        }
     return cnt;   
    }
}
相关推荐
科大饭桶7 分钟前
数据结构自学Day15 -- 非比较排序--计数排序
数据结构·算法·leetcode·排序算法·c
剪一朵云爱着17 分钟前
力扣二叉树的前序中序后序遍历总结
算法·leetcode·二叉树
乌萨奇也要立志学C++23 分钟前
【洛谷】单向链表、队列安排、约瑟夫问题(list相关算法题)
算法·链表·list
橘颂TA24 分钟前
【C++】C++11特性的介绍和使用(第三篇)
前端·c++·算法·c++11
丶小鱼丶1 小时前
栈算法之【有效括号】
java·算法
技术卷4 小时前
详解力扣高频 SQL 50 题之584. 寻找用户推荐人【入门】
sql·leetcode·oracle
小徐不徐说4 小时前
每日一算:华为-批萨分配问题
数据结构·c++·算法·leetcode·华为·动态规划·后端开发
菜鸟555557 小时前
图论:最小生成树
算法·图论
月阳羊7 小时前
【硬件-笔试面试题】硬件/电子工程师,笔试面试题-26,(知识点:硬件电路的调试方法:信号追踪,替换,分段调试)
笔记·嵌入式硬件·面试·职场和发展
2401_872945098 小时前
【补题】Codeforces Round 735 (Div. 2) C. Mikasa
算法