码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 881 救生艇(贪心)

时间:2020-01-31 15:51:14      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:limit   说明   rescue   最大   amp   size   返回   sum   移动   

题目

第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。

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

返回载到每一个人所需的最小船数。(保证每个人都能被船载)。

思路

排序+双指针+贪心

每次尽量选取一个较小的和一个较大的组合共用一条船。

代码

class Solution {
public:
    int numRescueBoats(vector<int>& people, int limit) {
        sort(people.begin(),people.end());//排序,从小到大
        int left=0,right=people.size()-1,sum=0;//双指针移动
        while(left<=right){
            if(people[left]+people[right]<=limit){//贪心,尽量满足limit
                sum++;
                right--;
                left++;
            }
            else{//若超重,说明右指针处单独要一条船,则右指针左移
                sum++;
                right--;
            }
        }
        return sum;
    }
};

LeetCode 881 救生艇(贪心)

标签:limit   说明   rescue   最大   amp   size   返回   sum   移动   

原文地址:https://www.cnblogs.com/ambassdor/p/12245486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!