-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path1011-CapacityToShipPackagesWithinDDays.cs
46 lines (43 loc) · 1.32 KB
/
1011-CapacityToShipPackagesWithinDDays.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//-----------------------------------------------------------------------------
// Runtime: 148ms
// Memory Usage:
// Link:
//-----------------------------------------------------------------------------
using System;
namespace LeetCode
{
public class _1011_CapacityToShipPackagesWithinDDays
{
public int ShipWithinDays(int[] weights, int D)
{
var totalSum = 0;
var largestNumber = -1;
for (int i = 0; i < weights.Length; i++)
{
largestNumber = Math.Max(largestNumber, weights[i]);
totalSum += weights[i];
}
var l = largestNumber;
var h = totalSum;
while (l <= h)
{
var mid = l + (h - l) / 2;
var count = 1;
var currentSum = 0;
for (int i = 0; i < weights.Length; i++)
{
if (currentSum + weights[i] > mid)
{
count++;
if (count > D) break;
currentSum = weights[i];
}
else currentSum += weights[i];
}
if (count > D) l = mid + 1;
else h = mid - 1;
}
return l;
}
}
}