当前位置:网站首页>通关剑指 Offer——剑指 Offer II 008. 和大于等于 target 的最短子数组
通关剑指 Offer——剑指 Offer II 008. 和大于等于 target 的最短子数组
2022-08-02 04:18:00 【SK_Jaco】
1.题目描述
剑指 Offer II 008. 和大于等于 target 的最短子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。
示例 2:
输入:target = 4, nums = [1,4,4]
输出:1
示例 3:
输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0
2.解题思路与代码
2.1 解题思路
这道题目使用双指针解答非常简单,难度在于双指针的边界如何确定。我们使用 r 表示窗口的有边界,l 表示窗口的左边界,并初始化让两个值为 0。然后开始让整个窗口在数组上面进行移动。我们以题目示例 target = 7, nums = [2,3,1,2,4,3] 为例进行图解。
首先我们需要在数组上找到比 7 大的并且最接近 7 的窗口,右边界 r 指向 nums[0],这个时候需要将 0 位置的 2 选中并统计总和,此时[l, r] 窗口内的总和为 2,小于 7 于是让右边界 r 继续移动。
r 移动到 nums[1] 窗口为 [0, 1],此时窗口内总和为 5 小于 7 依然让右边界继续移动
重复这样的步骤直到 r 指向 num[3] 时此时窗口内的总和为 8 大于 7 ,此时我们找到了第一个大于等于 7 的窗口,那么就开始从左边界开始缩小窗口。
我们让左边界开始依次缩小,直到窗口内的总和小于 7 为止。先计算一次当前窗口的大小,此时大小为 4 ,然后开始移动左边界。左边界移动一次之后发现此时窗口 [1, 3] 内的总和已经小于 7 了,那么就需要继续移动右边界,重复这一系列动作后,直到找到最小窗口为止。
2.2 代码
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int l = 0;
int r = 0;
int sum = 0;
int min = 0;
while (r < nums.length) {
// 移动右边界
sum += nums[r];
// 当窗口内总和大于等于 target 时开始统计窗口大小并移动左边界,直到窗口内总和小于 target 为止
while (sum >= target) {
min = min == 0 ? r - l + 1 : Math.min(min, r - l + 1);
sum -= nums[l++];
}
r++;
}
return min;
}
}
2.3 测试结果
通过测试
3.总结
- 使用滑动窗口进行解答
- 当右边界移动到第一个大于等于 target 的窗口时,计算窗口大小,然后开始缩小左边界直到窗口内总和小于 target 为止
边栏推荐
猜你喜欢

直播 | 7.30 ApacheCon Asia 2022 IOT/IIOT专题,IoTDB PMC 乔嘉林担任出品人

EasyCVR视频广场切换通道,视频播放协议异常的问题修复

如何让固定点的监控设备在EasyCVR平台GIS电子地图上显示地理位置?

8月1日“海豹数藏”将全网首发民族英雄林则徐《四行行书》数字藏品!

复制延迟案例(4)-一致前缀读

【STM32】 ADC模数转换

使用 Fastai 构建食物图像分类器

The line chart with square PyQt5_pyqtgraph mouse

Scientific research notes (5) SLAC WiFi Fingerprint+ Step counter fusion positioning

数据可视化之百变柱状图
随机推荐
自定义一个下划线分词器
Sentinel熔断之非控制台方式总结
论人生自动化
Camtasia 2022简体中文版屏幕录像和视频编辑软件
C - The Domino Effect(dfs+回溯)
ADSP21489工程中LDF文件配置详解
【C语言程序】求直角三角形边长
redis基础入门
力扣练习——单词搜索
【面试】招聘要求
The most authoritative information query steps for SCI journals!
力扣 剑指 Offer 56 - I. 数组中数字出现的次数
Research Notes (6) Indoor Path Planning Method Based on Environment Perception
复制延迟案例(1)-最终一致性
PyQt5_pyqtgraph mouse draws straight lines on line charts
W25Q16 存储器(Flash)
立方体卫星Light-1
投资组合分析:portfolio_analysis.Tangenvy_portfolio(切点组合)
2022-08-01:以下go语言代码输出什么?A:panic;B:5;C:6;D:编译错误。 package main import ( “fmt“ ) func main() {
【STM32】ADC采集光敏数据(不看库函数手册进行配置)