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

【leetcode】209. 长度最小的子数组

文章目录

    • 题目
    • 代码
      • 1. 暴力求解
      • 2. 滑动窗口

题目

给定一个含有 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. 暴力求解

暴力求解: 18 / 21
思路:双循环

class Solution(object):def minSubArrayLen(self, target, nums):""":type target: int:type nums: List[int]:rtype: int"""# 暴力求解: 18 / 21 min_len = float("inf")for i in range(len(nums)):cur_sum = 0for j in range(i, len(nums)):cur_sum += nums[j]if cur_sum >= target:min_len = min(min_len, j -i +1)breakreturn min_len if min_len != float('inf') else 0

2. 滑动窗口

**思路:**根据滑动窗口算窗口下的总和,如果大于target,则窗口左边+1

class Solution(object):def minSubArrayLen(self, target, nums):""":type target: int:type nums: List[int]:rtype: int"""# 滑动窗口l = len(nums)left = 0right = 0sum = 0min_lenth = float("inf")while right < l:sum += nums[right]# 当前累计值大于等于targetwhile sum >= target:min_lenth = min(min_lenth, right - left + 1)sum -= nums[left]left += 1right += 1return min_lenth if min_lenth != float("inf") else 0
http://www.dtcms.com/a/216987.html

相关文章:

  • 深度学习————注意力机制模块
  • 「Python教案」循环语句的使用
  • 纯C++ 与欧姆龙PLC使用 FINS TCP通讯源码
  • 【Python训练营打卡】day37 @浙大疏锦行
  • 如何寻找大模型在企业业务中的价值?
  • 蓝桥杯b组c++赛道---字典树
  • IPv4地址的主要配置项介绍
  • 语音识别算法的性能要求一般是多少
  • 基于多流特征融合与领域知识整合的CNN-xLSTM-xAtt网络用于光电容积脉搏波信号的无创血压估计【代码已复现】
  • Matlab中gcb、gcbh、gcs的区别
  • Cursor 与DeepSeek的完美契合
  • 实时同步缓存,与阶段性同步缓存——补充理解《补充》
  • OpenCV 图像像素的读写操作
  • leetcode hot100刷题日记——18.搜索插入位置
  • PCB设计自检表
  • SAAS架构设计2-流程图-注册流程图
  • 【premiere教程】【01】【跑个流程】
  • 【新品发布】嵌入式人工智能实验箱EDU-AIoT ELF 2正式发布
  • 学习python day9
  • 为什么共现矩阵是高维稀疏的
  • 攻防世界-safer-than-rot13
  • 各个链接集合
  • Jenkins实践(7):Publish over SSH功能
  • 自然语言处理入门及文本预处理
  • STM32的HAL编码流程总结(上部)
  • LY/T 2714-2016 木塑门套线检测
  • 百胜咨询公司:企业EcoVadis认证的专业导航者
  • C-字符串函数
  • 第9章:网络协议栈与 IoT 通信
  • 低空经济管理系统设计方案