力扣数组基础之双指针有序数组的平方

题目:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

示例

1
2
3
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

思路

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
func min(a, b int) int {
if a <= b {
return a
}
return b
}
func minSubArrayLen(target int, nums []int) int {
left, right := 0, 0
var sum int
var ret int = len(nums) + 1
for left < len(nums) {
sum += nums[right]
// fmt.Printf("sum: %v\n", sum)
if sum < target {
right++
if right >= len(nums) {
left++
right = left
sum = 0
}
} else {
ret = min(ret, right-left+1)
// fmt.Printf("ret: %v\n", ret)
left++
right = left
sum = 0
}
}
if ret == len(nums) + 1 {
return 0
}
return ret
}