首页 > 其他分享 >209. 长度最小的子数组

209. 长度最小的子数组

时间:2023-05-05 18:55:35浏览次数:38  
标签:right target nums 209 sum 数组 answer 长度 left

 分析:

这题是找满足和大于等于target的最短数组

有点小问题,想用双指针做,但是写得有点糅杂了

最后一组案例时间超了

最后借鉴了一下题解写出来

代码:

 1 class Solution(object):
 2     def minSubArrayLen(self, target, nums):
 3         """
 4         :type target: int
 5         :type nums: List[int]
 6         :rtype: int
 7         """
 8         # count=sum(nums[0:-1])+nums[-1]
 9         # if count<target:
10         #     return 0
11         # elif count==target:
12         #     return len(nums)
13 
14         # mins=1e9
15         # for i in range(len(nums)):
16         #     count=0
17         #     # left=i
18         #     right=i
19         #     mine=0
20         #     while right!=len(nums):
21         #         count=count+nums[right]
22         #         mine+=1
23         #         if count>=target:
24         #             mins=min(mine,mins)
25         #             break
26         #         else:
27         #             right+=1
28         # return mins
29         n=len(nums)
30         left=0
31         answer=n+1
32         sum_nums=0
33         for right,x in enumerate(nums):
34             sum_nums+=x
35             while sum_nums>=target:
36                 answer=min(answer,right-left+1)
37                 sum_nums-=nums[left]
38                 left+=1
39         return answer if answer<=n else 0

 

标签:right,target,nums,209,sum,数组,answer,长度,left
From: https://www.cnblogs.com/ooooopppp/p/17375106.html

相关文章

  • 信奥赛题1105:数组逆序重存放
    新奥赛一本通,题11051105:数组逆序重存放时间限制:1000ms         内存限制:65536KB提交数:70600                通过数:47540【题目描述】将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。【输入】两行:第......
  • js基础---数组的方法
    sort():破坏性方法forEach():遍历数组,需要一个回调函数作为参数,遍历的次数与数组的长度有关。filter():将数组中符合要求的元素保存在新数组中返回需要一个回调函数作为参数,并根据函数返回值过滤数组非破坏型方法map():根据当前数组返回新数组需要回调函数做为参数回调函数的返......
  • LeetCode 209. 长度最小的子数组
    题目链接:LeetCode209.长度最小的子数组本题是一个滑动窗口的题,所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。在本题中实现滑动窗口,主要确定如下三点:窗口内是什么?窗口就是满足其和≥target的长度最小的连续子数组。如何移动窗口的起......
  • 350. 两个数组的交集 II
     分析: 跟上道题一样,但是可以重复代码:classSolution(object):defintersect(self,nums1,nums2):""":typenums1:List[int]:typenums2:List[int]:rtype:List[int]"""count=[]......
  • LeetCode 977. 有序数组的平方
    题目链接:LeetCode977.有序数组的平方本题直接暴力求解就是先求出每个元素平方后的值,再对平方后的值进行排序,双指针解法由于数组其实是有序的,只不过负数平方之后可能成为最大数了。那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。此时可以考虑双指......
  • 349. 两个数组的交集
     分析:本来刷二分的,但是这道题不用双指针也能做所以就偷个懒,加上数组范围小,遍历就行代码:1classSolution(object):2defintersection(self,nums1,nums2):3"""4:typenums1:List[int]5:typenums2:List[int]6:rtyp......
  • IP地址字符串转数组
    查看代码staticuint8_tip_buf[4];staticuint8_ttest_str[]="192.168.1.123";staticuint8_tipstr2num(uint8_t*src_str);voidipstr2num(uint8_t*src_str){inti=0,j=0,k=0;charnew_str[3];while(*src_str!='\0'......
  • [Leetcode] 0697.数组的度
    697.数组的度点击上方标题跳转至leetcode题目描述给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在nums中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 示例1:输入:nums=[1,2,2,3,1]输......
  • 6-2 数组排序输出(函数模板)
    对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下来为size个指定类型的数据。输出将从小到大顺序输出数据。函数接口定义:sor......
  • 类模板。。。对象数组
    #include<bits/stdc++.h>usingnamespacestd;template<classT>classAAA{      Ta,b;   public:      AAA(T_a,T_b):a(_a),b(_b){};      Tsum(){         returna+b;      }      Tcha();};template<......