在正整数数组里找总和大于等于 target 的最短连续段。全是正数,窗口和随左右端点单调变化,可以用滑动窗口。
给定一个包含 n 个正整数的数组 nums 和一个正整数 target。
请找出数组中元素总和大于等于 target 的长度最小的连续子数组,并输出该子数组的长度。
设该子数组的左右端点分别为 l 和 r,则该子数组为 numsl,numsl+1,…,numsr。
如果不存在满足条件的子数组,则输出 0。
第一行输入两个整数 n 和 target,分别表示数组 nums 的长度和目标值。
第二行输入 n 个正整数 numsi,表示数组中的各个元素,相邻整数之间用空格分隔。
1≤target≤109
1≤n≤105
1≤numsi≤104
输出一个整数,表示元素总和大于等于 target 的最短连续子数组的长度。
如果不存在满足条件的连续子数组,则输出 0。
输入
6 7
2 3 1 2 4 3
输出
2
说明
连续子数组 4,3 的元素总和为 7,满足总和大于等于 target 的条件。
不存在长度更短的满足条件的连续子数组,因此答案为 2。
输入
3 4
1 4 4
输出
1
说明
单个元素 4 已经满足总和大于等于 target,因此最短连续子数组的长度为 1。
输入
8 11
1 1 1 1 1 1 1 1
输出
0
说明
整个数组的元素总和为 8,小于 target=11。
因此不存在满足条件的连续子数组,输出 0。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册