1580
根据题意,我发现因为只能从左右两边插入所以越里面越小于是我写了
for (int i = 1; i < n; i++) warehouse[i] = min(warehouse[i - 1], warehouse[i]);
for (int i = n - 1; i > 0; i--) warehouse[i] = min(warehouse[i], warehouse[i -1]);
去更新它们实际能放的最大值, 又因为顺序无关所以把box sort了,到这里我想的是先把小的塞进去于是我的思路就限制住了,因为小的根本无法塞,此外我的更新最大值写的也有问题,这样写之后实际是同时限制了两侧,例如[1,3,2]
经过更新以后会变成[1,1,2]
但实际上它还是可以放入2
正确做法
使用two pointer先把大的塞在左右两边,此外因为越里越小并且我们sort了boxes,所以我们剩下的肯定能忘里塞,只需再判断一下双指针是否越界以及值具体放左边还是放右边