lc881. 救生艇
约 196 字
预计阅读 1 分钟
贪心+双指针
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class Solution {
public:
int numRescueBoats(vector<int>& people, int limit) {
sort(people.begin(), people.end());
int n = people.size(), cnt = 0;
// 双指针+贪心
// 从小到大进行排序
// i指向最小,j指向最大
// i和j相加小于limit,则i与所有的j都可以组合成一组,此时应该贪心选择最优策略,两个相加重量最大
// i和j相加大于limit,则j与其他所有的i都不可以组成一组,j--
for(int i = 0, j = n - 1; i <= j;){
if(people[i] + people[j] <= limit){
i++;j--;
}else{
j--;
}
cnt += 1;
}
return cnt;
}
};
|