leetcode 881.救生艇
思路:经典的贪心套路‘
其实就是对于每个数组的元素进行从最小或者从最大的元素开始进行遍历,或者说我们首先对于数组进行倒序或者是升序进行排序之后,再在两端进行双指针的筛选。
题目中又说规定一个船里面只能够装两个人,所以我们在遍历的时候,尽最大的可能进行装载两个人,也就是说,我们每次都需要从两端进行筛选,如果说两端的人数的重量是可以承载的,这个时候每一个船也就是说可以装载了两个人,这样可以最大限度的减少船只的数量。所以我们就可以用这样的方法进行贪心即可。
class Solution {
public int numRescueBoats(int[] people, int limit) {
int n=people.length;
int l=0;
int r=n-1;
Arrays.sort(people);
int cnt=0;
while(l<r){
if(people[l]+people[r]<=limit){
cnt++;
l++;
r--;
}
else{
cnt++;
r--;
}
}
if(l==r){
if(people[l]<=limit)
cnt++;
}
return cnt;
}
}