如題
感覺沒有捷徑可找,只能確定需要迭代查詢max元素到元素和之間的每個次數,找到最小的那乙個
public static int shipwithindays(int weights, int d)
sum+=i;
} if(d>=weights.length) else if(d==1)
for(int i=max;im)
} return d>-1;
}
結果很顯然不是很理想
思路上找不到捷徑了,但是很顯然寫法上可以優化,對於最小值的迭代,有最大值和最小值,很顯然二分法減少迭代次數
public static int shipwithindays1(int weights, int d)
sum+=i;
} int isum =0;
int count =0;//計算載重為max的所需次數
for(int i:weights)
} if(d>=count+1) else if(d==1)//後續使用二分法找出最合適的值
int in =max ; //二分法中的較小值
int ax =sum ;//二分法中的較大值
while (in優化效果很明顯
1011 在 D 天內送達包裹的能力
傳送帶上的包裹必須在 d 天內從乙個港口運送到另乙個港口。傳送帶上的第i個包裹的重量為weights i 每一天,我們都會按給出重量的順序往傳送帶上裝載包裹。我們裝載的重量不會超過船的最大運載重量。返回能在d天內將傳送帶上的所有包裹送達的船的最低運載能力。示例 1 輸入 weights 1,2,3,...
1011 在 D 天內送達包裹的能力
題目描述 傳送帶上的包裹必須在 d 天內從乙個港口運送到另乙個港口。傳送帶上的第 i 個包裹的重量為 weights i 每一天,我們都會按給出重量的順序往傳送帶上裝載包裹。我們裝載的重量不會超過船的最大運載重量。返回能在 d 天內將傳送帶上的所有包裹送達的船的最低運載能力。示例 1 輸入 weig...
力扣 1011 在 D 天內送達包裹的能力
1011.在 d 天內送達包裹的能力 傳送帶上的包裹必須在 d 天內從乙個港口運送到另乙個港口。傳送帶上的第 i 個包裹的重量為 weights i 每一天,我們都會按給出重量的順序往傳送帶上裝載包裹。我們裝載的重量不會超過船的最大運載重量。返回能在 d 天內將傳送帶上的所有包裹送達的船的最低運載能...