coding•DSA & Problem Solving•Arrays & Sliding Window
Fruit Into Baskets - Max Two Distinct Elements Window
Problem Statement
You are visiting a farm that has a single row of fruit trees arranged from left to right. The trees are represented by an integer array `fruits` where `fruits[i]` is the **type** of fruit the `i-th` tree produces.
You want to collect as much fruit as possible. However, the owner has some strict rules:
- You only have **two** baskets, and each basket can only hold a **single type** of fruit.
- Starting from any tree of your choice, you must pick exactly one fruit from **every** tree (including the start tree) while moving to the right.
- The picked fruits must fit in one of your baskets.
- Once you reach a tree with fruit that cannot fit in your baskets, you must stop.
Given the integer array `fruits`, return the **maximum number** of fruits you can pick.
### Constraints
- `1 <= fruits.length <= 10^5`
- `0 <= fruits[i] < fruits.length`
### Input Format
A single line containing space-separated integers representing `fruits`.
### Output Format
Print the maximum number of fruits collected.
Sample Cases
Example 1Sample Case
Input: 1 2 1
Output: 3
Example 2Sample Case
Input: 0 1 2 2
Output: 3
Example 3Sample Case
Input: 1 1
Output: 2
Example 4Sample Case
Input: 1 2
Output: 2
Constraints
Runtime Limit: 2000 ms per test batch
Memory Limit: 256 MB
Standard I/O stream reading
Official submissions are evaluated against hidden test cases on the server to verify time & memory complexity.