zoukankan      html  css  js  c++  java
  • 209. 长度最小的子数组 (JAVA)

    给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。

    示例:

    输入:s = 7, nums = [2,3,1,2,4,3]
    输出:2
    解释:子数组 [4,3] 是该条件下的长度最小的子数组。

    思路:最小长度->想到移动窗口,双指针

    class Solution {
        public int minSubArrayLen(int s, int[] nums) {
            if(nums.length == 0) return 0;
    
            int start = 0;
            int end = 0;
            int minLen = Integer.MAX_VALUE;
            int sum = 0;
            for (; end < nums.length && start <= end; end++ ){
                sum += nums[end];
                if(sum < s) {
                    continue;
                } 
                
                while(sum >= s){
                    if(end-start+1 < minLen){
                        minLen = end-start+1;
                    }
                    sum -= nums[start];
                    start++;
                }
                
            }
            while (start < end) {
                sum -= nums[start];
                start++;
                if(sum >= s && end-start+1 < minLen) {
                    minLen = end-start+1;
                }
            }
            if(minLen < Integer.MAX_VALUE) return minLen;
            else return 0;
        }
    }
  • 相关阅读:
    Cookie和Seesion
    Forms组件
    分页器组件
    关于Django的Ajax操作
    Oracle常用数据库表操作
    redis的缓存穿透 缓存并发 缓存失效
    Struts2的拦截器
    Struts2的各种标签库
    Struts2基础知识
    Java常用数据结构和算法
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/13817645.html
Copyright © 2011-2022 走看看