LeetCode(1011 D天內運送包裹的能力)

2021-10-02 02:10:49 字數 889 閱讀 3724

如題

感覺沒有捷徑可找,只能確定需要迭代查詢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 天內將傳送帶上的所有包裹送達的船的最低運載能...