LeeCode:救生艇(贪心)
问题描述
第 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:救生艇(贪心)相关推荐
- LeeCode 1488 贪心 + STL
题意 传送门 LeeCode 1488. 避免洪水泛滥 题意 顺序遍历 r a i n s rains rains, s e t set set 维护可用以排水的日子, m a p map map 维 ...
- LeeCode 5455 贪心 + BIT
题意 传送门 LeeCode 5455. 最多 K 次交换相邻数位后得到的最小整数 题解 求最小整数,贪心地将尽可能小的数字移动到尽可能高的位数上.从最高位开始,每次处理一位:从小到大枚举数字 0−9 ...
- 力扣881. 救生艇(贪心,双指针)
881. 救生艇 题目描述: 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人 ...
- 881. 救生艇-快速排序加贪心算法
881. 救生艇 给定数组 people .people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 ...
- Leecode 738. 单调递增的数字 贪心
原题链接:Leecode 738. 单调递增的数字 代码写的是真烂,,,可读性就是"仅自己可读"的程度... class Solution {public:int monotone ...
- 每日一题:贪心算法解救生艇问题
问题描述: 来源:LeetCode第881题 难度:中等 给定数组 people .people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit. 每艘船最多可同时 ...
- leetcode881. 救生艇(贪心算法加双指针)
第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.(保证每个人都 ...
- LeetCode 881. 救生艇(贪心,双指针)
1. 题目 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.( ...
- 【每日一算法】救生艇
微信改版,加星标不迷路! 每日一算法-救生艇 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. ...
最新文章
- 如何注入值到Spring bean属性
- Hydra暴力破解工具的用法
- javascript提取标签之间的信息
- 计算机二级等级考试模拟试题,2016年计算机二级考试office模拟试题
- 解决IE浏览器URL乱码的问题
- 切片 go 去除第一个_golang学习笔记--切片slice 与数组 arr
- android listview 只加载显示的图片大小,Android ListView只加载当前屏幕内的图片(解决list滑动时加载卡顿)...
- 《Inside C#》笔记(一) .NET平台
- 2003卡在应用计算机设置,计算机操作与应用(Windows XP+Office 2003)
- 华为HCIE认证考试简介
- 验证牛顿公式的局部收敛性,并找到对于牛顿公式不收敛(发散)的函数,比较二分法与牛顿公式的收敛速度
- p2p终结者在交换机上的机器用P2P终结者
- yolo 深度学习_YoLo v1-v3深度学习网络-结构简介
- 大数据是什么和大数据技术十大核心原理详解
- C语言推荐书籍从入门到进阶带你走上大牛之路(珍藏版)
- 利用微信公共号的带参数二维码做(扫码登录)
- Matlab中的参数解析
- pc端和移动端两套样式在vue中的切换
- 玩转 Java8 Stream 流,常用方法,详细用法大合集!
- phpMyAdmin - 配置文件权限错误,不应任何用户都能修改!