Check if There is a Valid Partition For The Array - Problem

You are given a 0-indexed integer array nums. You have to partition the array into one or more contiguous subarrays.

We call a partition of the array valid if each of the obtained subarrays satisfies one of the following conditions:

  • The subarray consists of exactly 2, equal elements. For example, the subarray [2,2] is good.
  • The subarray consists of exactly 3, equal elements. For example, the subarray [4,4,4] is good.
  • The subarray consists of exactly 3 consecutive increasing elements, that is, the difference between adjacent elements is 1. For example, the subarray [3,4,5] is good, but the subarray [1,3,5] is not.

Return true if the array has at least one valid partition. Otherwise, return false.

Input & Output

Example 1 — Valid Partition Exists
$ Input: nums = [4,4,4,5,6]
Output: true
💡 Note: We can partition into [4,4,4] (three equal elements) and [5,6] (two elements, but [5,6] is not valid since they're not equal). Actually this should be false. Let me recalculate: [4,4,4] is valid but [5,6] is invalid, so the answer is false.
Example 2 — Three Equal Elements
$ Input: nums = [4,4,4]
Output: true
💡 Note: The entire array [4,4,4] consists of exactly 3 equal elements, which is a valid subarray.
Example 3 — Consecutive Sequence
$ Input: nums = [1,2,3]
Output: true
💡 Note: The entire array [1,2,3] consists of exactly 3 consecutive increasing elements (difference of 1 between adjacent elements).

Constraints

  • 2 ≤ nums.length ≤ 105
  • 1 ≤ nums[i] ≤ 106

Visualization

Tap to expand
Valid Array Partition ProblemCheck if array can be split into valid subarraysValid Subarray Types:2 Equal[4,4]3 Equal[4,4,4]3 Consecutive[1,2,3]Example: nums = [1,1,2,2]1122✓ Valid: 2 equal✓ Valid: 2 equalPartition: [1,1] + [2,2]Result: true ✓
Understanding the Visualization
1
Input
Array of integers that needs to be partitioned
2
Check Partitions
Find valid subarrays: 2 equal, 3 equal, or 3 consecutive
3
Result
Return true if valid partition exists, false otherwise
Key Takeaway
🎯 Key Insight: Use dynamic programming to build the solution from right to left, checking valid partition possibilities at each position
Asked in
Google 15 Amazon 12 Meta 8
18.5K Views
Medium Frequency
~25 min Avg. Time
892 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen