首页 > 其他分享 >leetcode代码记录(长度最小的子数组

leetcode代码记录(长度最小的子数组

时间:2024-03-20 20:29:47浏览次数:22  
标签:target nums min len 数组 长度 leetcode

目录

1. 题目:

在这里插入图片描述
给定一个含有 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

2. 我的代码:

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        fast_i = 0
        slow_i = 0
        # 记录目前总和
        sum_now = 0
        len_min = 100000000

        # 滑动窗口
        for fast_i in range(len(nums)):
            sum_now += nums[fast_i]
            while sum_now >= target:
                len_min = min(len_min, fast_i - slow_i + 1)
                sum_now -= nums[slow_i]
                slow_i += 1


        if len_min == 100000000:
            return 0
        return len_min

这种求区间内东西的题型可以使用滑动窗口,滑动窗口其实就是快慢指针中间夹的部分。因为要求值,所以为了防止再去遍历滑动窗口内的元素,所以,定义了数字总一步一步地加和。

快指针的范围是从0len(nums) - 1,然后当总和大于等于target时慢指针向右缩短,并且记录此时的最小长度(作为最小长度的起始值,可以定义一个非常大的数字)。

如果最小长度还是初始值,则说明没有最小长度的子数组,因此返回0

小结:

关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可:

标签:target,nums,min,len,数组,长度,leetcode
From: https://blog.csdn.net/m0_72249799/article/details/136845407

相关文章

  • 【leetcode】135_candy糖果题_贪心算法_C语言_唐完了之后是?(雾
    原题如下:(蓝字为原题链接,可跳转查看)135.分发糖果n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并......
  • 01天【代码随想录算法训练营34期】 第一章 数组part01 (704. 二分查找、 27. 移除元
    二分查找classSolution(object):defsearch(self,nums,target):low=0high=len(nums)-1while(low<=high):mid=(high+low)//2ifnums[mid]==target:returnmide......
  • 冒泡、选择排序;二维数组;函数三要素,形参实参
    冒泡排序法012max08,12,13,98,12,13,98,12,9,131318,12,98,9,121228,993第一轮从前往后两两比较,4个元素比较3次,得出最大值为13。第二轮,3个元素比较2次,最大值为12。第三轮,2个元素比较1次,最大值为9。通过简单较少的数据推导得出结论,i个元素需要比较i-1轮,第j轮需要比较i-1......
  • 代码随想录刷题记录第一天 | 数组 | 704. 二分查找,27. 移除元素
    题目链接:704.二分查找-https://leetcode.cn/problems/binary-search/description/27.移除元素-https://leetcode.cn/problems/remove-element/description/文章学习链接:https://programmercarl.com/数组理论基础.html视频学习链接:https://www.bilibili.com/video/BV1f......
  • Leet code 974 和可被K整除的子数组
    解题思路 同余必定符合条件我们计算出从第一个位置到后面每个位置的sum如果给出一段数组nums为3 4 7 3  k=5第一个位置sum=3 第二位置sum=7 第三个位置sum=14 第四个位置sum=17这里7和17余数都为2 17-7=10 10%5=0   这里可以看出余数相同一定之......
  • C#中的params的用法(可变数组)
    最近小编看C#视频,听到小杨老师讲到可变数组,涉及到一个param修饰符,有点不太明白,于是小编站在巨人的肩膀上开始了探索和学习,略有了解,分享给大家哟~【一】params是什么?params是一个计算机函数,表示函数的参数是可变个数的,即可变的方法参数,用于表示类型相同,但参数数量不确定。C#开发语......
  • 代码随想录算法训练营第五十二天 | 718. 最长重复子数组 ,674. 最长连续递增序列,300.最
    300.最长递增子序列 已解答中等 相关标签相关企业 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] ......
  • 接雨水 - LeetCode 热题 7
    大家好!我是曾续缘......
  • 扁平化数组的方法
    1、flat()方法将以指定的深度递归遍历数组,并将所有元素与遍历的子数组中的元素合并到一个新数组中以返回。constarr=[1,[2,[3,[4,5]]],6]//方法一:数组自带的扁平化方法,flat的参数代表的是需要展开几层,如果是Infinity的话,就是不管嵌套几层,全部都展开console.log(arr.fla......
  • LeetCode 1161. Maximum Level Sum of a Binary Tree
    原题链接在这里:https://leetcode.com/problems/maximum-level-sum-of-a-binary-tree/description/题目:Giventhe root ofabinarytree,thelevelofitsrootis 1,thelevelofitschildrenis 2,andsoon.Returnthe smallest level x suchthatthesumofa......