滑动窗口法:
使用for循环控制右指针不超出数组,在for循环中使用while循环控制左指针,验证在右指针通过的数组中是否连续能够相加大于target。
- 右指针每移动一次则将值加入sum中
- 当sum值大于或等于target值时进入左指针移动状态(while循环)
- 在while状态下的前提是sum>target,因此result可不断求最小长度赋入
- 左指针移动后sum则减去指针刚移过的值
target = 7
sum = 2 < taeget = 7 不进入左指针移动,右指针继续移动
sum = 5 < taeget = 7 不进入左指针移动,右指针继续移动
sum = 6 < taeget = 7 不进入左指针移动,右指针继续移动
sum = 8 > taeget = 7 进入左指针移动,while循环不退出右指针不移动
result = 4 left ++ 计算长度,左指针移动
sum = 6 < taeget = 7 不进入左指针移动,右指针继续移动
sum = 10 > taeget = 7 进入左指针移动,while循环不退出右指针不移动
result = 4 left ++ 计算长度,左指针移动
sum = 7 = taeget = 7 左指针移动未退出,右指针不移动
result = 3 left ++ 计算长度,左指针移动
sum = 6 < taeget = 7 不进入左指针移动,右指针继续移动
sum = 9 > taeget = 7 进入左指针移动,while循环不退出右指针不移动
result = 3 left ++ 计算长度,左指针移动
sum = 7 = taeget = 7 左指针移动未退出,右指针不移动
result = 2 left ++ 计算长度,左指针移动
sum = 3 < taeget = 7 右指针继续移动出界,循环结束,返回result = 2