Find Maximum Candies With Two Types
Company: Bytedance
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Onsite
Quick Answer: This question evaluates algorithmic problem-solving with arrays, focusing on managing constraints on the number of distinct element types in a contiguous sequence and maintaining element frequency/state during a traversal.
Constraints
- 0 <= len(candies) <= 200000
- -1000000000 <= candies[i] <= 1000000000
Examples
Input: [1, 2, 1, 2, 3, 2, 2]
Expected Output: 4
Explanation: The longest valid segment is [1, 2, 1, 2], which has only two types and length 4.
Input: [0, 1, 2, 2]
Expected Output: 3
Explanation: The best segment is [1, 2, 2], which contains only types 1 and 2.
Input: []
Expected Output: 0
Explanation: There are no candies to take.
Input: [5]
Expected Output: 1
Explanation: A single candy is always valid.
Input: [3, 3, 3, 1, 2, 1, 1, 2, 3, 3, 4]
Expected Output: 5
Explanation: The longest valid segment is [1, 2, 1, 1, 2], which has length 5.
Input: [-1, -1, 2, 2, -1, 3]
Expected Output: 5
Explanation: The longest valid segment is [-1, -1, 2, 2, -1], which uses only two types and has length 5.
Hints
- Try maintaining a sliding window of consecutive candies that is always valid.
- Use a hash map to count how many candies of each type are currently inside the window, and shrink the left side when more than two types appear.