题目:输入一个字符串和一个数字,字符串的每个元素值代表每个人的重量,数字代表船的最大载重每个船上最多坐俩人,求需要多少船能把所有人载走。
输入:一个字符串people[]和整型limit
输出:船的数量
别人思路:
贪心算法
对数组进行从小到大排序,判断头和尾相加是不是满足条件(能坐一条船)
如果满足条件,则尾部指针前移一位,头部指针后移一位,记录加一;
如果不满足条件,尾部指针迁移一位,记录加一,头部指针不动,因为尾部指针位置 的数和目前最小的数求和都不满足条件,说明他只能自己坐一条船了,所以记录加一。
class Solution {
public int numRescueBoats(int[] people, int limit) {
int sum = 0 ;
int left, right ;
Arrays.sort(people);
left = 0 ;
right = people.length - 1 ;
while(left<=right){
sum ++ ;
if(people[left] + people[right]<=limit){
left ++ ;
}
right -- ;
}
return sum ;
}
}