Place items into earliest fitting bins
Company: Amazon
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Technical Screen
Quick Answer: This interview question evaluates algorithm design, data structures, correctness, complexity, edge cases, and implementation details in a realistic interview setting. A strong answer for Place items into earliest fitting bins states assumptions, handles edge cases, explains trade-offs, and shows how to validate the result clearly.
Constraints
- 1 <= n + k <= 2*10^5
- 0 <= items[i], caps[j]
- Items must be processed strictly in the given order.
- Each item goes into the leftmost (smallest index) bin with remaining capacity >= its size.
Examples
Input: ([2, 3, 5], [4, 6, 2])
Expected Output: 1
Explanation: 2->bin0([2,6,2]); 3->bin1([2,3,2]); 5-> no bin has >=5 left, so 1 unplaced.
Input: ([5, 5, 5], [4, 4, 4])
Expected Output: 3
Explanation: No bin can hold a size-5 item, so all 3 items are unplaced.
Hints
- A linear scan per item is O(n*k) — too slow at 2*10^5. You need to find the leftmost bin with capacity >= x in O(log n).
- Build a max segment tree over the bins' remaining capacities. The root holds the maximum remaining capacity; if it is < x, the item is unplaceable.
- To find the leftmost fitting bin, descend from the root: go to the left child whenever its subtree max >= x, otherwise go right. This lands on the smallest index whose remaining capacity >= x.
- After placing, subtract x at that leaf and recompute maxima on the path back to the root — O(log n) per placement.