0
点赞
收藏
分享

微信扫一扫

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


【前言】


今天是刷题打卡第44天!

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


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

原题:救生艇(双指针)

题目描述:

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

示例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,就不需要人为去特意编写一个排序算法了,很是方便。


【手把手带你刷好题】—— 44.救生艇(双指针)_排序算法_03 

代码执行:

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天!

加油吧少年。


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



举报

相关推荐

0 条评论