1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class Solution { public boolean validPartition(int[] nums) { int n = nums.length;
boolean[] dp = new boolean[n + 1]; dp[0] = true; dp[2] = nums[1] == nums[0]; for (int i = 3; i <= n; i++) { int l = nums[i - 3], m = nums[i - 2], r = nums[i - 1]; if (m == r) { dp[i] = dp[i - 2]; } if (!dp[i] && l == m && m == r) { dp[i] = dp[i - 3]; } if (!dp[i] && l + 1 == m && m + 1 == r) { dp[i] = dp[i - 3]; } }
return dp[n]; } }
|
References
2369. Check if There is a Valid Partition For The Array