LeetCode Entry
3074. Apple Redistribution into Boxes
Min containers for all apples sort
3074. Apple Redistribution into Boxes easy blog post substack youtube

Join me on Telegram
https://t.me/leetcode_daily_unstoppable/1214
Problem TLDR
Min containers for all apples #easy #counting_sort
Intuition
Sum all apples. Take largest containers first.
Approach
- (1..51).first for number of containers
- sort by counting
Complexity
-
Time complexity: \(O(sort)\), the sort can be NlogN or N for counting
-
Space complexity: \(O(sort)\), Kotlin’s IntArray.sort is O(1) space complexity
Code
// 29ms
fun minimumBoxes(a: IntArray, c: IntArray) =
(1..c.size).first { a.sum() <= c.sortedDescending().take(it).sum() }
// 0ms
pub fn minimum_boxes(a: Vec<i32>, c: Vec<i32>) -> i32 {
let mut s = a.iter().sum::<i32>(); let mut f = [0;51];
for c in c { f[c as usize] += 1 }; let mut j = 50;
(1..51).find(|i| { while f[j] < 1 { j-=1 }; s -= j as i32; f[j] -= 1; s <= 0}).unwrap() as _
}