3477. Fruits Into Baskets II LeetCode Solution
In this guide, you will get 3477. Fruits Into Baskets II LeetCode Solution with the best time and space complexity. The solution to Fruits Into Baskets II problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Fruits Into Baskets II solution in C++
- Fruits Into Baskets II solution in Java
- Fruits Into Baskets II solution in Python
- Additional Resources

Problem Statement of Fruits Into Baskets II
You are given two arrays of integers, fruits and baskets, each of length n, where fruits[i] represents the quantity of the ith type of fruit, and baskets[j] represents the capacity of the jth basket.
From left to right, place the fruits according to these rules:
Each fruit type must be placed in the leftmost available basket with a capacity greater than or equal to the quantity of that fruit type.
Each basket can hold only one type of fruit.
If a fruit type cannot be placed in any basket, it remains unplaced.
Return the number of fruit types that remain unplaced after all possible allocations are made.
Example 1:
Input: fruits = [4,2,5], baskets = [3,5,4]
Output: 1
Explanation:
fruits[0] = 4 is placed in baskets[1] = 5.
fruits[1] = 2 is placed in baskets[0] = 3.
fruits[2] = 5 cannot be placed in baskets[2] = 4.
Since one fruit type remains unplaced, we return 1.
Example 2:
Input: fruits = [3,6,1], baskets = [6,4,7]
Output: 0
Explanation:
fruits[0] = 3 is placed in baskets[0] = 6.
fruits[1] = 6 cannot be placed in baskets[1] = 4 (insufficient capacity) but can be placed in the next available basket, baskets[2] = 7.
fruits[2] = 1 is placed in baskets[1] = 4.
Since all fruits are successfully placed, we return 0.
Constraints:
n == fruits.length == baskets.length
1 <= n <= 100
1 <= fruits[i], baskets[i] <= 1000
Complexity Analysis
- Time Complexity: O(n\log n)
- Space Complexity: O(n)
3477. Fruits Into Baskets II LeetCode Solution in C++
class SegmentTree {
public:
explicit SegmentTree(const vector<int>& nums) : n(nums.size()), tree(n * 4) {
build(nums, 0, 0, n - 1);
}
// Updates nums[i] to val.
void update(int i, int val) {
update(0, 0, n - 1, i, val);
}
// Returns the first index i where baskets[i] >= target, or -1 if not found.
int queryFirst(int target) {
return queryFirst(0, 0, n - 1, target);
}
private:
const int n; // the size of the input array
vector<int> tree; // the segment tree
void build(const vector<int>& nums, int treeIndex, int lo, int hi) {
if (lo == hi) {
tree[treeIndex] = nums[lo];
return;
}
const int mid = (lo + hi) / 2;
build(nums, 2 * treeIndex + 1, lo, mid);
build(nums, 2 * treeIndex + 2, mid + 1, hi);
tree[treeIndex] = merge(tree[2 * treeIndex + 1], tree[2 * treeIndex + 2]);
}
void update(int treeIndex, int lo, int hi, int i, int val) {
if (lo == hi) {
tree[treeIndex] = val;
return;
}
const int mid = (lo + hi) / 2;
if (i <= mid)
update(2 * treeIndex + 1, lo, mid, i, val);
else
update(2 * treeIndex + 2, mid + 1, hi, i, val);
tree[treeIndex] = merge(tree[2 * treeIndex + 1], tree[2 * treeIndex + 2]);
}
int queryFirst(int treeIndex, int lo, int hi, int target) {
if (tree[treeIndex] < target)
return -1;
if (lo == hi) {
// Found a valid position, mark it as used by setting to -1.
update(lo, -1);
return lo;
}
const int mid = (lo + hi) / 2;
const int leftChild = tree[2 * treeIndex + 1];
return leftChild >= target
? queryFirst(2 * treeIndex + 1, lo, mid, target)
: queryFirst(2 * treeIndex + 2, mid + 1, hi, target);
}
int merge(int left, int right) const {
return max(left, right);
}
};
class Solution {
public:
int numOfUnplacedFruits(vector<int>& fruits, vector<int>& baskets) {
int ans = 0;
SegmentTree tree(baskets);
for (const int fruit : fruits)
if (tree.queryFirst(fruit) == -1)
++ans;
return ans;
}
};
/* code provided by PROGIEZ */
3477. Fruits Into Baskets II LeetCode Solution in Java
N/A
// code provided by PROGIEZ
3477. Fruits Into Baskets II LeetCode Solution in Python
N/A
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.