2369. 检查数组是否存在有效划分
题目链接:2369. 检查数组是否存在有效划分
代码如下:
//动态规划
class Solution {
public:bool validPartition(vector<int>& nums) {vector<int> dp(nums.size()+1,false);//dp[i]表示前i个元素组成的数组是否至少存在一个有效划分dp[0]=true;for(int i=1;i<=nums.size();i++){if(i>=2){dp[i]=dp[i-2]&&(nums[i-2]==nums[i-1]);}if(i>=3){bool flag=(nums[i-3]==nums[i-2]&&nums[i-3]==nums[i-1])||(nums[i-3]+1==nums[i-2]&&nums[i-2]+1==nums[i-1]);dp[i]=dp[i]||(dp[i-3]&&flag);//或是一个true即为true}}return dp[nums.size()];}
};