吉林有做网站的吗,免费虚拟机下载手机版,自己电脑做电影网站,邯郸建站公司2369. 检查数组是否存在有效划分
题目描述#xff1a;
给你一个下标从 0 开始的整数数组 nums #xff0c;你必须将数组划分为一个或多个 连续 子数组。
如果获得的这些子数组中每个都能满足下述条件 之一 #xff0c;则可以称其为数组的一种 有效 划分#xff1a;
子数…2369. 检查数组是否存在有效划分
题目描述
给你一个下标从 0 开始的整数数组 nums 你必须将数组划分为一个或多个 连续 子数组。
如果获得的这些子数组中每个都能满足下述条件 之一 则可以称其为数组的一种 有效 划分
子数组 恰 由 2 个相等元素组成例如子数组 [2,2] 。子数组 恰 由 3 个相等元素组成例如子数组 [4,4,4] 。子数组 恰 由 3 个连续递增元素组成并且相邻元素之间的差值为 1 。例如子数组 [3,4,5] 但是子数组 [1,3,5] 不符合要求。
如果数组 至少 存在一种有效划分返回 true 否则返回 false 。 示例 1 输入nums [4,4,4,5,6]
输出true
解释数组可以划分成子数组 [4,4] 和 [4,5,6] 。
这是一种有效划分所以返回 true 。示例 2 输入nums [1,1,1,2]
输出false
解释该数组不存在有效划分。提示 2 nums.length 10^51 nums[i] 10^6 思路
感觉子串的题很多都是滑动窗口
这一二条有重合的部分想象如果满足二必定满足一所以只需要判断一是否满足如果是则直接跳出不满足一也不可能满足二直接不用判断条件二了一判断结束开始判断三。
没试出来直奔题解哦dp 代码 class Solution {public boolean validPartition(int[] nums) {int n nums.length;boolean[] fnew boolean[n1];f[0]true;for(int i1;in;i){if (f[i - 1] nums[i] nums[i - 1] ||i 1 f[i - 2] (nums[i] nums[i - 1] nums[i] nums[i - 2] ||nums[i] nums[i - 1] 1 nums[i] nums[i - 2] 2)) {f[i 1] true;}}return f[n];}
}