剑指offer 和大于等于target的最短子数组
力扣题目
解题思路:
双指针(有点滑动窗口的思想)
1.初始话最短数组的长度 min = Integer.MAX_VALUE
2.初始化一个数组的和 sum = 0;
3.定义变量(窗口的前后指针)i=0 j=0 j为快指针
4.开始遍历,当sum的值大于等于target时更新min
5.缩小窗口范围,加入后边的数组元素。
class Solution {
public int minSubArrayLen(int target, int[] nums) {
//设置最小初始值
int min = Integer.MAX_VALUE;
//初始化数组和
int sum = 0;
//定义两个变量i,j
for(int i=0,j=0;j<nums.length;j++){
//扩大窗口
sum += nums[j];
while(i<=j && sum>=target){
//更新最小值
min = Math.min(min,j-i+1);
//缩小窗口
sum-= nums[i++];
}
}
//若所有数组和都小于target,则返回0,否则返回更新值
return min == Integer.MAX_VALUE?0:min;
}
}
本文来自博客园,作者:蹇爱黄,转载请注明原文链接:https://www.cnblogs.com/jianjiana/p/15863171.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?