题目一:给定一个数组arr,长度为N,且每个值都是正数,代表N个人的体重。再给定一个正数limit,代表一艘船的载重,一下是坐船规则:
1)每艘船最多只能坐俩个人
2)乘客的体重和不能超过limit
返回如果同时让这N个人过河至少需要几条船
先排序:假设
【1,1,3,3,3,4,4,5,5,5,7,7,9,9,9】 limit = 10
先看小于等于limit/2的最右的位置
如果没有则返回N条船
双指针
【L】+【R】 ? limit
大于时 L左移
小于等于时,R右移
最后,统计
统计数量:勾号a个,x号b个,三角c个
一共需要a+【b/2】(向上取整)+c条船
//请保证arr有序
public static int minBoat(int[] arr, int limit){
//arr排个序
if(arr == null || arr.length == 0){
return 0;
}
//遍历数组arr,如果发现