【每日一算法】救生艇
微信改版,加星标不迷路!
每日一算法-救生艇
第 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)
提示:
1 <= people.length <= 50000
1 <= people[i] <= limit <= 30000
解析
思路
如果最重的人可以与最轻的人共用一艘船,那么就这样安排。否则,最重的人无法与任何人配对,那么他们将自己独自乘一艘船。
这么做的原因是,如果最轻的人可以与任何人配对,那么他们也可以与最重的人配对。
算法
令 people[i]
指向当前最轻的人,而 people[j]
指向最重的那位。
然后,如上所述,如果最重的人可以与最轻的人共用一条船(即 people[j] + people[i] <= limit
),那么就这样做;否则,最重的人自己独自坐在船上。
实现代码
class Solution {public: int numRescueBoats(vector<int>& people, int limit) { //printf("%d",people[0]); sort(people.begin(),people.end()); int num = 0; // 船的个数 int i = 0 ; int j = people.size()-1; while(i<=j){ num++; if(people[i] + people[j] <=limit){ i++; } j--; } return num; }};
需要注意的地方
本题的难点:最轻的和最重的相匹配,然后巧妙的使用贪心算法解决了此问题。多思考,多想解决方案,总有一天我们会变摩托,加油!
今日问题
在计算机领域,你认为考研有必要吗?
打卡格式:打卡第n天,答:...
为什么打卡?戳下面你就知道了!
猛
戳
这
儿
21/天/养/一/个/好/习/惯
【每日一算法】救生艇相关推荐
- 【每日一算法】对称二叉树
每日一算法-对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是 ...
- 【每日一算法】使用二分法解决x 的平方根问题
每日一算法-x 的平方根 题目 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: ...
- 【每日一算法】二叉树的层次遍历 II
每日一算法-二叉树的层次遍历 II 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,n ...
- 【每日一算法】最大子序列和
每日一算法-最大子序列和 题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] ...
- 【每日一算法】杨辉三角 II
每日一算法-杨辉三角 II 题目 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] ...
- 【每日一算法】杨辉三角到底是什么?
每日一算法-杨辉三角 题目 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出:[ [1], ...
- 【每日一算法】二叉树的最小深度
每日一算法-二叉树的最小深度 题目 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,2 ...
- 【每日一算法】合并两个有序数组
每日一算法-搜索插入位置 题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...
- 【每日一算法】平衡二叉树
微信改版,加星标不迷路! 每日一算法-搜索插入位置 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: ...
最新文章
- 学术报告 | 模拟液态和薄结构之间相互作用的多尺度模型
- linux下,redis 3.2.1双节点集群安装部署
- c++编辑器_盘点四款PDF编辑器,使用它们,编辑PDF文件没问题!
- python opencv resize函数_Python OpenCV中的resize()函数的使用
- 微软小冰评分接口_微软小冰测颜值准不准?郑爽才得6.3分,较真你就输了
- jupyter-使用及设置密码
- 《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表
- 仪表盘怎么调 铃木uy125摩托车_平时市区骑行,摩托车链条多久保养一次?
- spring boot 调试 - 热部署
- [Java]一步一步学 Web
- UVA10523 Very Easy !!!题解
- dom4j 解析xml文件demo
- 利用FbinstTool制作多系统(winPE+Ubuntu+CDLinux)启动U盘
- OKHTTP深入浅出(二)----基本用法
- matlab绘制雷达图
- 物联时代,二维码技术在各行业有哪些应用?
- 关于使用迅雷下载百度云盘文件的教程
- HikariPool-1 - Exception during pool initialization. Could not create connection
- Linux 之系统美化
- Spring——事物操作
热门文章
- 7000 字 23 张图,Pandas一键生成炫酷的动态交互式图表
- 从样本处理到决策模型,如何用NLP识别盗版资源?
- 多线程批量拆分List导入数据库
- 面试官:说说RabbitMQ 消费端限流、TTL、死信队列
- SpringCloud 2020版本教程4:使用spring cloud sleuth+zipkin实现链路追踪
- 干掉 powerdesigner,设计数据库表用它就够了
- 新技能 MyBatis 千万数据表,快速分页!
- 为什么阿里巴巴要禁用 Executors 创建线程池?
- 面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧
- “干掉” Date,Java8 LocalDate 真香!