【手把手带你刷好题】—— 44.救生艇(双指针)

举报
安然无虞 发表于 2022/05/26 23:43:23 2022/05/26
【摘要】 【前言】 今天是刷题打卡第44天! 最近很忙,所以近期整理的题目大都是蓝桥专栏里面的,也是很经典题目哦。   原题:救生艇(双指针) 题目描述:   示例1: 输入:people = [1,2], limit = 3 输出:1 解释:1 艘船载 (1, 2) 示例2: 输入:peopl...

【前言】

今天是刷题打卡第44天!

最近很忙,所以近期整理的题目大都是蓝桥专栏里面的,也是很经典题目哦。

 

原题:救生艇(双指针)

题目描述:

 

示例1:


  
  1. 输入:people = [1,2], limit = 3
  2. 输出:1
  3. 解释:1 艘船载 (1, 2)

示例2:


  
  1. 输入:people = [3,2,2,1], limit = 3
  2. 输出:3
  3. 解释:3 艘船分别载 (1, 2), (2) 和 (3)

思路(对撞指针):

本题类似于上面那个引入栗子,也是采用“对撞指针”思想,不过本题一开始不是有序的,所以先排序,代码采用C++编写,因为可以用STL,就不需要人为去特意编写一个排序算法了,很是方便。

 

代码执行:


  
  1. class Solution {
  2. public:
  3. int numRescueBoats(vector<int>& people, int limit) {
  4. //先排序数组
  5. sort(people.begin(),people.end());
  6. int i = 0;//起始位置
  7. int j = people.size() - 1;//末尾位置
  8. int count = 0;
  9. while(i <= j)
  10. {
  11. if(people[i]+people[j] <= limit)//i较特殊,想想特殊在哪里
  12. {
  13. i++;
  14. }
  15. j--;
  16. count++;
  17. }
  18. return count;
  19. }
  20. };

结语

今天是刷题打卡第44天!

加油吧少年。

 

 

文章来源: bit-runout.blog.csdn.net,作者:安然无虞,版权归原作者所有,如需转载,请联系作者。

原文链接:bit-runout.blog.csdn.net/article/details/121842205

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。