(LeetCode 面试经典 150 题 ) 209. 长度最小的子数组(双指针)

题目:209. 长度最小的子数组


思路:双指针,时间复杂度0(n)。

sum记录左右指针内的数组元素之和,当sum-nums[left]>=target时,移动左指针。

C++版本:

cpp 复制代码
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int n=nums.size();
        int mn=n+1;
        int sum=0;
        for(int left=0,right=0;right<n;right++){
            sum+=nums[right];
            while(sum-nums[left]>=target){
                sum-=nums[left];
                left++;
            }
            if(sum>=target){
                mn=min(mn,right-left+1);
            }
        }
        return mn==n+1 ? 0:mn;
    }
};

JAVA版本:

java 复制代码
class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int n=nums.length;
        int mn=n+1;
        int sum=0;
        for(int left=0,right=0;right<n;right++){
            sum+=nums[right];
            while(sum-nums[left]>=target){
                sum-=nums[left];
                left++;
            }
            if(sum>=target){
                mn=Math.min(mn,right-left+1);
            }
        }
        return mn==n+1 ? 0:mn;
    }
}

GO版本:

go 复制代码
func minSubArrayLen(target int, nums []int) int {
    n:=len(nums)
    sum,mn:=0,n+1
    for left,right:=0,0;right<n;right++ {
        sum+=nums[right]
        for sum-nums[left]>=target {
            sum-=nums[left]
            left++
        }
        if sum>=target {
            mn=min(mn,right-left+1)
        }
    }
    if mn==n+1 {
        return 0
    }
    return mn
}
相关推荐
qq_479875432 小时前
C++ std::Set<std::pair>
开发语言·c++
毕业设计制作和分享2 小时前
springboot150基于springboot的贸易行业crm系统
java·vue.js·spring boot·后端·毕业设计·mybatis
云知谷4 小时前
【C++基本功】C++适合做什么,哪些领域适合哪些领域不适合?
c语言·开发语言·c++·人工智能·团队开发
电子_咸鱼5 小时前
LeetCode——Hot 100【电话号码的字母组合】
数据结构·算法·leetcode·链表·职场和发展·贪心算法·深度优先
仰泳的熊猫5 小时前
LeetCode:785. 判断二分图
数据结构·c++·算法·leetcode
^Moon^5 小时前
CycloneDDS:跨主机多进程通信全解析
c++·分布式·dds
rit84324995 小时前
基于MATLAB实现基于距离的离群点检测算法
人工智能·算法·matlab
C_Liu_7 小时前
C++:list
开发语言·c++
my rainy days7 小时前
C++:友元
开发语言·c++·算法
haoly19897 小时前
数据结构和算法篇-归并排序的两个视角-迭代和递归
数据结构·算法·归并排序