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

力扣209. 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度如果不存在符合条件的子数组,返回 0 。


示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

提示:

  • 1 <= target <= 109
  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 104

进阶:

  • 如果你已经实现 O(n) 时间复杂度的解法, 请尝试设计一个 O(n log(n)) 时间复杂度的解法。

代码:

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        
        int start = 0, end = 0, sum = 0;
        int len = INT_MAX;

        if(nums.size() == 0){
            return 0;
        }

        while(end < nums.size()){
            sum += nums[end];

            while(sum >= target){
                len = min(end - start + 1, len);
                sum -= nums[start];
                start++;
            }

            end++;
        }

        if(len == INT_MAX) return 0;

        return len;
    }
};

解题思路:

(1)使用滑动窗口思想。

(2)首先,右边一直滑到满足条件。

(3)其次,左边一直滑到不满足条件。

(4)注意滑动时,判断最小窗口长度。


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

相关文章:

  • IDEA 撤销 merge 操作(详解)
  • zookeeper 数据类型
  • Java 内存溢出(OOM)问题的排查与解决
  • 使用LLM自回归与超级转义词表生成图像:超越传统扩散模型的新范式
  • 如何很快将文件转换成另外一种编码格式?编码?按指定编码格式编译?如何检测文件编码格式?Java .class文件编码和JVM运行期内存编码?
  • 文献阅读 | B. S. Carmo 2010
  • 深入理解计算机系统—虚拟内存(一)
  • 【C++】set与map模拟实现
  • 数据可视化搭配数据分析,解锁数据潜能的密码
  • 利用大语言模型解决推理任务
  • Springboot - Web
  • C++STL中bitset的介绍与使用
  • 数据库软考历年上午真题与答案解析(2018-2024)
  • 点击<el-dropdown>中某一项跳转页面时,控制台报错的问题
  • 基于海豚调度功能开发——推送下游系统数据库连接信息批量修改方案与实现
  • 算法-10进制转换成16进制,负数用补码表示
  • 一、二极管(模电理论篇)
  • ubuntu安装firefox
  • aardio —— 改变按钮文本颜色
  • Node.js应用程序遇到了内存溢出的问题
  • IP5385应用于移动电源快充方案的30W到100W大功率电源管理芯片
  • 服务器开发 的编程环境(programming environment)核心知识
  • Linux下部署ElasticSearch集群
  • 基于SpringBoot和Thymeleaf的仿小米电商系统源码下载与安装指南-幽络源
  • Win11+WLS Ubuntu 鸿蒙开发环境搭建(二)
  • DVWA靶场文件上传漏洞全级别通关及源码深度解析