首页 > 其他分享 >长度最小的子数组滑动窗口

长度最小的子数组滑动窗口

时间:2023-07-08 20:11:54浏览次数:29  
标签:arr right 窗口 int res 数组 长度 滑动

/**
     * 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。
     *
     * 长度最小的子数组
     * 示例:
     *
     * 输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。
     */
    public int minLength(int[] arr,int s){
        int sum = 0;
        int left = 0;
        int res = arr.length;

        for (int right = 0; right < arr.length; right++) {
            sum += arr[right];
            while(sum >= s){

                int length = right - left + 1;
                res = Math.min(res,length);
                sum -= arr[left];
                left++;
            }
        }
        return res;
    }

    @Test
    public void test1(){
        int[] arr = new int[]{2,3,1,2,4,3};
        int i = minLength(arr, 7);
        System.out.println(i);
    }

  遍历窗口的结束位置,求出总和>目标值,获取这个区间的长度,然后不断两两比较求最小长度,然后移动开始位置并且总和减去开始位置的值。

标签:arr,right,窗口,int,res,数组,长度,滑动
From: https://www.cnblogs.com/sgj191024/p/17537765.html

相关文章

  • Unity UGUI的Slider(滑动条)件组的介绍及使用
    UnityUGUI的Slider(滑动条)件组的介绍及使用1.什么是Slider组件?Slider(滑动条)是UnityUGUI中的一种常用UI组件用,于在用户界面中实现滑动选择的功能。通过拖动滑块,用户可以选择一个数值范围的内值。2.Slider组件的工作原理Slider组件由两部分组成:滑动区域和滑块。滑动区域用于显......
  • 树状数组进阶
    cnblogs。作为一个常数小且好写的数据结构,树状数组(BinaryIndexedTree,BIT)自然是求解数据结构问题的第一选择。除了众所周知的区间加区间求和,树状数组还能代替常数巨大的线段树做很多事情,例如树状数组二分和维护高维差分。1.树状数组的结构很多选手对树状数组的了解仅停留在......
  • 移除数组中的元素返回新数组的长度,双指针实现
    /***给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。**不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。**元素的顺序可以改变。你不需要考虑数组中超出新长度后面的......
  • 如何实现MySQL 字符串转换成数组的具体操作步骤
    MySQL字符串转换成数组在MySQL中,我们经常需要对字符串进行处理和转换。有时候,我们需要将一个字符串拆分成多个部分,然后进行进一步的处理。这时,将字符串转换成数组是一种常见的操作。方法一:使用SUBSTRING_INDEX函数MySQL提供了SUBSTRING_INDEX函数,可以用于将一个字符串按照指定......
  • 解决Java中的byte数组不够补空格的具体操作步骤
    Java中的byte数组不够补空格在Java编程中,我们经常需要处理二进制数据,其中byte数组是一种常见的数据类型。然而,在某些情况下,我们可能需要将byte数组的长度扩展到指定的长度,不足的部分用空格进行补齐。本文将介绍在Java中如何实现byte数组的补齐操作,并提供相关代码示例。为什么需要......
  • 窗口标识setWindowFlags
    在使用Qt设计的时候经常会看到QWidget空间的构造函数出现下面这样一句话:QWidget(QWidget*parent=0,Qt::WindowFlagsf=0);QWidget*parent这段代码容易理解,是指父窗口部件的指定。Qt::windowFlagsf=0这段代码就有一点不解了,其实他是指定控件的窗口标识的。值为0即Qt::Widget。......
  • 167. 两数之和 II - 输入有序数组
    给你一个下标从1开始的整数数组 numbers,该数组已按非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target的两个数。如果设这两个数分别是numbers[index1]和numbers[index2],则1<=index1<index2<=numbers.length。以长度为2的整数数组[index1,i......
  • 二分法查找目标元素在数组中的索引
    /***给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,*如果目标值存在返回下标,否则返回-1。*输入:nums=[-1,0,3,5,9,12],target=9*输出:4*解释:9出现在nums中并且下标为4......
  • Java中的字符串到数组 – 如何将字符串转换为数组
    当您开发文本处理应用程序或处理数据时,能够将字符串转换为数组非常有帮助。Java中的字符串是一组字符,而数组是同一类型元素的集合。您可以使用转换过程将字符串解构为各个部分,然后将这些部分存储在数组中以供进一步操作或分析。本文将为您介绍各种将字符串转换为数组的Java技......
  • 数组对象如何赋值给JToken
    提问数组对象如何赋值给JToken回答创建一个JsonArray字符串将字符串装维JArrayJArray赋值给JTokenvarstrIps=$"[\"{string.Join("\",\"",rootObject.IpRateLimiting.IpWhitelist)}\",\"::1/10\"]";varips=JArray.Parse(s......