【手把手带你刷好题】—— 44.救生艇(双指针)
【摘要】
【前言】
今天是刷题打卡第44天!
最近很忙,所以近期整理的题目大都是蓝桥专栏里面的,也是很经典题目哦。
原题:救生艇(双指针)
题目描述:
示例1:
输入:people = [1,2], limit = 3 输出:1 解释:1 艘船载 (1, 2)
示例2:
输入:peopl...
【前言】
今天是刷题打卡第44天!
最近很忙,所以近期整理的题目大都是蓝桥专栏里面的,也是很经典题目哦。
原题:救生艇(双指针)
题目描述:
示例1:
-
输入:people = [1,2], limit = 3
-
-
输出:1
-
-
解释:1 艘船载 (1, 2)
示例2:
-
输入:people = [3,2,2,1], limit = 3
-
-
输出:3
-
-
解释:3 艘船分别载 (1, 2), (2) 和 (3)
思路(对撞指针):
本题类似于上面那个引入栗子,也是采用“对撞指针”思想,不过本题一开始不是有序的,所以先排序,代码采用C++编写,因为可以用STL,就不需要人为去特意编写一个排序算法了,很是方便。
代码执行:
-
class Solution {
-
public:
-
int numRescueBoats(vector<int>& people, int limit) {
-
//先排序数组
-
sort(people.begin(),people.end());
-
int i = 0;//起始位置
-
int j = people.size() - 1;//末尾位置
-
int count = 0;
-
while(i <= j)
-
{
-
if(people[i]+people[j] <= limit)//i较特殊,想想特殊在哪里
-
{
-
i++;
-
}
-
j--;
-
count++;
-
}
-
return count;
-
}
-
};
结语
今天是刷题打卡第44天!
加油吧少年。
文章来源: bit-runout.blog.csdn.net,作者:安然无虞,版权归原作者所有,如需转载,请联系作者。
原文链接:bit-runout.blog.csdn.net/article/details/121842205
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)