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

Leetcode 3350 Adjacent Increasing Subarrays Detection II

题意:有一个数组, 求最大值k,满足两个相邻的长度为k的子数组是严格递增的。

题解:满足两个相邻的长度为k的子数组是严格递增的,这个验证起来是比较容易的,求解是比较难的。想到可能可以二分。
问题转化成,验证两个相邻的长度为k的子数组是严格递增的。
子数组严格递增的问题可以想到用dp

class Solution {
public:
    int maxIncreasingSubarrays(vector<int>& nums) {
        int l = 0;
        int r = nums.size() / 2;
        while (l < r) {
            int mid = l + (r - l + 1) / 2;
            if(hasIncreasingSubarrays(nums,mid)) {
                l = mid;
            } else {
                r = mid - 1;
            }
        }
        return l;
    }
    

    bool hasIncreasingSubarrays(vector<int>& nums, int k) {
        int n = nums.size();
        vector<int> dp(n, 1);
        for(int i = 1; i < n; i++) {
            if(nums[i] > nums[i-1]) {
                dp[i] = dp[i-1] + 1;
            }
        }  

        for(int i = 0; i <= n - k - 1; i++) {
            if(dp[i] >= k && dp[i+k] >= k)
                return true;
        }
        return false;
    }
};

算法复杂度(2nlog2n),空间复杂度O(n)


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

相关文章:

  • 00000008_C并发编程与多线程
  • 【和春笋一起学C++】文本输入与读取(二)
  • esp32开发笔记之一:esp32开发环境搭建vscode+ubuntu
  • 什么是网络安全攻防演练,即红蓝对抗?
  • 将txt转成excel正则化公式的调整
  • TCP 如何获取端口信息
  • ResNet网络详解
  • 【Spring】@Autowired与@Resource的区别
  • 常用环境部署(二十三)——Docker部署ERPNext
  • C++学习笔记----11、模块、头文件及各种主题(一)---- 模板概览与类模板(8)
  • 深度学习-神经网络基础-激活函数与参数初始化(weight, bias)
  • [Linux]:IO多路转接之epoll
  • 鸿蒙next版开发:订阅应用事件(ArkTS)
  • EasyExcel 使用多线程按顺序导出数据
  • linux GPIO
  • 【Linux】进程状态与进程优先级
  • torch jit 动态获取buffer
  • upload-labs通关练习
  • 闲鱼监控助手货源获取技巧(轻松找到优质货源的方法)
  • 【大数据测试spark+kafka-详细教程(附带实例)】
  • Unity3D设置3D物体不超出相机视角范围(物体一直保持在相机视角范围内)
  • Android S长按文件或视频或编辑中文字或输入框中文字不会弹出分享菜单
  • 零基础入门转录组下游分析——预后模型之多因素cox模型
  • 小西作业1_third order plant(SPM)
  • Linux也有百度云喔~
  • 在Java中使用ModelMapper简化Shapefile属性转JavaBean实战