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

203. 长度最小的子数组

时间:2024-10-29 21:13:11浏览次数:1  
标签:203 target nums int sum while result 数组 长度

题目

看了卡哥的视频后,写了如下代码:

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int result = INT32_MAX;
        int sum = 0;
        int i = 0, j = 0;
        for (j = 0; j < nums.size(); j ++ )
        {
            sum += nums[j];
            while (sum >= target)
            {
                result = min(result, j - i + 1);
                sum -= nums[i ++ ];

            }
        }
        return result == INT32_MAX ? 0 : result; 
    }
};

几个注意点:

  • 因为是求最小值,所以将result初始化为INT32_MAX,同时与min函数配合,求出答案。

  • 注意此题的i不会回溯,i是一直向前走的,j是一直向后走的。

    为什么i是一直向前走的?

    当改变j的值时(即j ++ ),i不会重新赋值为0,因为我们要求的是长度最小的子数组,将i赋值为0没有意义(为什么没意义?因为从0到还没赋值为0的那个i都不会导致比上一个result更优的result,应该从还没赋值为0的那个i的后一个位置开始考虑)

  • 应该是while (sum >= target)而不是while (sum > target)

    因为sum == target的时候对应的ij可能对应着答案,我们要让sum == target这个情况进入while处理。

标签:203,target,nums,int,sum,while,result,数组,长度
From: https://www.cnblogs.com/hisun9/p/18514467

相关文章

  • 977. 有序数组的平方
    题目看了卡哥的讲解视频后,写了如下代码:classSolution{public:vector<int>sortedSquares(vector<int>&nums){vector<int>result;intk=nums.size()-1;inti=0,j=k;while(i<=j){......
  • 复杂度分析,数据结构的数组与链表
    复杂度分析,数据结构的数组与链表参考书籍:Hello算法目录复杂度分析,数据结构的数组与链表复杂度分析时间复杂度空间复杂度数据结构数组与链表数组链表列表复杂度分析复杂度分析是用来判断一个算法效率的手段,执行时所需的时间和空间资源则是正好对应时间和空间复杂度。考虑到执......
  • 560. 和为 K 的子数组(中)
    目录题目法一、暴力枚举法二、前缀和+哈希表优化题目给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的子数组的个数。子数组是数组中元素的连续非空序列。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2法一......
  • c语言-数组队列-学习笔记
    数组队列#include<stdio.h>#include<stdlib.h>/*数组顺序队列*/typedefstructSqQueue{ intdata[10]; intfront; intrear;}SqQueue;voidInitQueue(SqQueue*Q){ Q->front=Q->rear=0;}voidEnQueue(SqQueue*Q,inta){ Q->data[Q->rear......
  • NumPy掩码数组(Masked Arrays)教程
    简介在处理数据时,我们经常会遇到缺失或无效的数据条目。如果想在不删除这些数据的情况下跳过或标记它们,可能需要使用条件语句或过滤数据。NumPy的numpy.ma模块提供了掩码数组(maskedarrays)功能,可以更方便地处理这种情况。掩码数组是标准NumPyndarray和掩码(mask)的......
  • 《Kadane‘s Algorithm专题:最大和连续子数组》
    ......
  • 209. 长度最小的子数组
    给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其总和大于等于target的长度最小的子数组[numsl,numsl+1,...,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。示例1:输入:target=7,nums=[2,3,1,2,4,3]输出:2解释:子数组......
  • Go入门指南-7.6字符串、数组和切片的应用
    7.6.1从字符串生成字节切片假设s是一个字符串(本质上是一个字节数组),那么就可以直接通过c:=[]byte(s)来获取一个字节数组的切片c。另外,您还可以通过copy函数来达到相同的目的:copy(dst[]byte,srcstring)。同样的,还可以使用for-range来获得每个元素(Listing7.1......
  • react数组插入
    1、定义数组:const[items,setItems]=useState([]);2、普通js写法插入:setItems([...items,newItem])但是由于react是异步渲染的,这种更新方式可能会导致渲染不同步3、推荐更新方式:使用setState方法,并提供一个函数,该函数接收先前的状态,并返回一个更新后的状态。constaddIte......
  • JS分隔换行成数组+去重
    代码:varmDPS="";if(multipleDispatchID!=''){constarr=multipleDispatchID.split(/[(\r\n)\r\n]+/);constarr1=Unique(arr)for(vari=0;i<arr1.length;i++){......