解题思路:
先写一个方法判断船的最大运载重量为H时能否在D天内运完
然后二分查找就好了
暂时没有想到其他方法了
class Solution { public int shipWithinDays(int[] weights, int D) { int left = 0; int right = 0; for(int i = 0; i < weights.length; i++) { left = Math.max(left, weights[i]); right += weights[i]; } int mid = 0; while(left < right) { mid = (left+right)/2; if(verification(weights, D, mid)) { right = mid; } else { left = mid+1; } } return left; } public boolean verification(int[] weights, int D, int H) { int count = 1; int weight = 0; for(int i = 0; i < weights.length; i++) { if(weights[i]+weight <= H) { weight += weights[i]; } else { weight = weights[i]; count++; } } return count <= D; } }
链接:https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/solution/1011-zai-d-tian-nei-song-da-bao-guo-de-n-xwzq/