当前位置: 首页 > article >正文

3349、检测相邻递增子数组 Ⅰ

3349、[简单] 检测相邻递增子数组 Ⅰ

1、题目描述

给你一个由 n 个整数组成的数组 nums 和一个整数 k,请你确定是否存在 两个 相邻 且长度为 k严格递增 子数组。具体来说,需要检查是否存在从下标 ab (a < b) 开始的 两个 子数组,并满足下述全部条件:

  • 这两个子数组 nums[a..a + k - 1]nums[b..b + k - 1] 都是 严格递增 的。
  • 这两个子数组必须是 相邻的,即 b = a + k

如果可以找到这样的 两个 子数组,请返回 true;否则返回 false

子数组 是数组中的一个连续 非空 的元素序列。

2、解题思路

要解决这个问题,我们需要检查数组 nums 中是否存在两个相邻的严格递增子数组,且每个子数组的长度为 k。因此,可以将问题分解为以下步骤:

  1. 检查递增子数组:我们先遍历 nums,找出从每个索引 i 开始的长度为 k 的子数组是否为严格递增。
  2. 相邻递增子数组检查:如果在遍历过程中找到了满足条件的相邻严格递增子数组,则返回 true。如果遍历结束没有找到,返回 false。

3、解题过程

  1. 从数组的每个索引 i 开始,检查 nums[i..i+k-1] 是否严格递增。
  2. 如果 nums[i..i+k-1]nums[i+k..i+2*k-1] 都是严格递增的,且满足两个子数组是相邻的,则返回 true
  3. 如果遍历完毕没有找到满足条件的子数组,则返回 false

4、代码实现

class Solution {
public:
    bool hasIncreasingSubarrays(vector<int>& 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;
                }
            }

            // 如果相邻的两个子数组都是严格递增的, 则返回 true
            if (firstIncreasing && secondIncreasing) {
                return true;
            }
        }

        // 遍历完后仍未找到符合条件的子数组, 返回 false
        return false;
    }
};

http://www.kler.cn/a/446523.html

相关文章:

  • List深拷贝后,数据还是被串改
  • aioice里面candidate固定UDP端口测试
  • Springboot logback 日志打印配置文件,每个日志文件100M,之后滚动到下一个日志文件,日志保留30天(包含traceid)
  • python:用 sklearn 构建线性回归模型,并评价
  • 用Java编写简单的文字游戏
  • IO (位于 java.io 包中)
  • SpringCloudAlibaba | Sentinel从基础到进阶
  • Three.js入门-Raycaster鼠标拾取详解与应用
  • 【蓝桥杯】43696.小数第n位
  • 如何创建属于自己的大语言模型:从零开始的指南
  • 目标检测与R-CNN——pytorch与paddle实现目标检测与R-CNN
  • 互联网医院系统,互联网医院系统源码可供
  • 固定资产分类,提升资产盘活效益
  • flink实现复杂kafka数据读取
  • 网工考试——数据链路层、网络层、传输层
  • 开源Genesis: 开创机器人研究的全新模拟平台
  • C++11 智能指针
  • 基于 SSM 和 Vue 打造的专业电脑测评系统:引领科技评估潮流
  • Flutter组件————Scaffold
  • iPhone恢复技巧:如何从 iPhone 恢复丢失的照片
  • 密钥管理系统在数据安全解决方案中的重要性
  • TensorFlow_T11 优化器对比实验
  • 用docker快速安装电子白板Excalidraw绘制流程图
  • GaussDB数据库中SQL诊断解析之配置SQL限流
  • Bcrypt在线密码加密生成器
  • 【人工智能】用Python实现图卷积网络(GCN):从理论到节点分类实战