asp.net个人网站模板,百度做网站好吗,台州优秀网站设计,wordpress固定链接精简3349、[简单] 检测相邻递增子数组 Ⅰ
1、题目描述
给你一个由 n 个整数组成的数组 nums 和一个整数 k#xff0c;请你确定是否存在 两个 相邻 且长度为 k 的 严格递增 子数组。具体来说#xff0c;需要检查是否存在从下标 a 和 b (a b) 开始的 两个 子数组#xff0c…3349、[简单] 检测相邻递增子数组 Ⅰ
1、题目描述
给你一个由 n 个整数组成的数组 nums 和一个整数 k请你确定是否存在 两个 相邻 且长度为 k 的 严格递增 子数组。具体来说需要检查是否存在从下标 a 和 b (a b) 开始的 两个 子数组并满足下述全部条件
这两个子数组 nums[a..a k - 1] 和 nums[b..b k - 1] 都是 严格递增 的。这两个子数组必须是 相邻的即 b a k。
如果可以找到这样的 两个 子数组请返回 true否则返回 false。
子数组 是数组中的一个连续 非空 的元素序列。
2、解题思路
要解决这个问题我们需要检查数组 nums 中是否存在两个相邻的严格递增子数组且每个子数组的长度为 k。因此可以将问题分解为以下步骤
检查递增子数组我们先遍历 nums找出从每个索引 i 开始的长度为 k 的子数组是否为严格递增。相邻递增子数组检查如果在遍历过程中找到了满足条件的相邻严格递增子数组则返回 true。如果遍历结束没有找到返回 false。
3、解题过程
从数组的每个索引 i 开始检查 nums[i..ik-1] 是否严格递增。如果 nums[i..ik-1] 和 nums[ik..i2*k-1] 都是严格递增的且满足两个子数组是相邻的则返回 true。如果遍历完毕没有找到满足条件的子数组则返回 false。
4、代码实现
class Solution {
public:bool hasIncreasingSubarrays(vectorint nums, int k) {int n nums.size();// 边界情况检查if (n 2 * k) {return false;}// 遍历数组, 检查相邻的递增子数组for (int i 0; i n - 2 * k; i) {bool firstIncreasing true, secondIncreasing true;// 检查第一个长度为 k 的子数组是否严格递增for (int j i; j i k - 1; j) {if (nums[j] nums[j 1]) {firstIncreasing false;break;}}// 检查第二个长度为 k 的子数组是否严格递增for (int j i k; j i 2 * k - 1; j) {if (nums[j] nums[j 1]) {secondIncreasing false;break;}}// 如果相邻的两个子数组都是严格递增的, 则返回 trueif (firstIncreasing secondIncreasing) {return true;}}// 遍历完后仍未找到符合条件的子数组, 返回 falsereturn false;}
};