问题描述

第 i 个人的体重为 people[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)

输入说明

首先输入人的数量n,然后输入n个整数,表示人的体重。

最后输入limit。

1 <= n <= 50000

1 <= 人的体重 <= limit <= 30000

4
3 5 3 4
5

输出说明

输出一个整数

4

代码思路

用贪心思想解决,首先将体重进行排序,首先选择重量最大的人,看他是否可以与重量最小的人坐同一艘船,如果可以,则把他们组成一组;如果不可以,那么重量最大的人和其他的人也不能组成一队了,这个时候就让重量最大的人独自坐一艘船,再去考虑重量第二大的人和重量最小的人是否可以组成一队,以此类推。因此可以使用两个指针,分别指向重量最大的人和重量最小的人,也就是数组的两端。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;class Solution {public:int minNum(vector<int>& people,int limit){int num=0;sort(people.begin(),people.end());int left=0,right=people.size()-1;while(left<=right){if(people[left]+people[right]<=limit){num++;left++;right--;}else{right--;num++;}}return num;}
};int main()
{int n,data,limit;vector<int> people;cin>>n;for(int i=0; i<n; i++)    {cin>>data;people.push_back(data);}cin>>limit;int res=Solution().minNum(people,limit);cout<<res; return 0;}

LeeCode:救生艇(贪心)相关推荐

  1. LeeCode 1488 贪心 + STL

    题意 传送门 LeeCode 1488. 避免洪水泛滥 题意 顺序遍历 r a i n s rains rains, s e t set set 维护可用以排水的日子, m a p map map 维 ...

  2. LeeCode 5455 贪心 + BIT

    题意 传送门 LeeCode 5455. 最多 K 次交换相邻数位后得到的最小整数 题解 求最小整数,贪心地将尽可能小的数字移动到尽可能高的位数上.从最高位开始,每次处理一位:从小到大枚举数字 0−9 ...

  3. 力扣881. 救生艇(贪心,双指针)

    881. 救生艇 题目描述: 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人 ...

  4. 881. 救生艇-快速排序加贪心算法

    881. 救生艇 给定数组 people .people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 ...

  5. Leecode 738. 单调递增的数字 贪心

    原题链接:Leecode 738. 单调递增的数字 代码写的是真烂,,,可读性就是"仅自己可读"的程度... class Solution {public:int monotone ...

  6. 每日一题:贪心算法解救生艇问题

    问题描述: 来源:LeetCode第881题 难度:中等 给定数组 people .people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit. 每艘船最多可同时 ...

  7. leetcode881. 救生艇(贪心算法加双指针)

    第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.(保证每个人都 ...

  8. LeetCode 881. 救生艇(贪心,双指针)

    1. 题目 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.( ...

  9. 【每日一算法】救生艇

    微信改版,加星标不迷路! 每日一算法-救生艇 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. ...

最新文章

  1. 如何注入值到Spring bean属性
  2. Hydra暴力破解工具的用法
  3. javascript提取标签之间的信息
  4. 计算机二级等级考试模拟试题,2016年计算机二级考试office模拟试题
  5. 解决IE浏览器URL乱码的问题
  6. 切片 go 去除第一个_golang学习笔记--切片slice 与数组 arr
  7. android listview 只加载显示的图片大小,Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)...
  8. 《Inside C#》笔记(一) .NET平台
  9. 2003卡在应用计算机设置,计算机操作与应用(Windows XP+Office 2003)
  10. 华为HCIE认证考试简介
  11. 验证牛顿公式的局部收敛性,并找到对于牛顿公式不收敛(发散)的函数,比较二分法与牛顿公式的收敛速度
  12. p2p终结者在交换机上的机器用P2P终结者
  13. yolo 深度学习_YoLo v1-v3深度学习网络-结构简介
  14. 大数据是什么和大数据技术十大核心原理详解
  15. C语言推荐书籍从入门到进阶带你走上大牛之路(珍藏版)
  16. 利用微信公共号的带参数二维码做(扫码登录)
  17. Matlab中的参数解析
  18. pc端和移动端两套样式在vue中的切换
  19. 玩转 Java8 Stream 流,常用方法,详细用法大合集!
  20. phpMyAdmin - 配置文件权限错误,不应任何用户都能修改!

热门文章

  1. PTMs-GPT,GPT2
  2. Excel数据分析(一)公式错误值与解决办法
  3. DirectX 12 3D 游戏开发与实战第五章内容
  4. 高人、天才、牛逼…从柳传志到雷军、马云,几乎没人不服任正非!
  5. 企企通携手“浙江制造”品牌【安诺化学】,一站式采购管理助推企业数字化建设
  6. API--天气查询(高德api)
  7. 开源GPU显存虚拟化项目,你的2080Ti还能救一下
  8. Android中设置分割线
  9. 【Android】线上自助点餐系统
  10. 《给你一个团队你怎么带》笔记(绝多数为个人经验,仅供参考)