Medium
题目大意为:寻找子数组,使的子数组中的最大值和最小值的和小于target
并统计子数组的数量。
min+max
恰好<=target
那么我们这个数组里面填充这个范围的任意值都能成立,而且还能将最大值替换成比他小的数,如下图
[num1,num2...numx]
来说,所有的可能性为2^n-1
,也就是[num2...numx]
每个数都有两种可能性,可以取,可以不取以上,尝试写一下代码,AC!
python3
class Solution:
def numSubseq(self, nums: List[int], target: int) -> int:
nums.sort()
i = 0
j = len(nums)-1
res = 0
while i <= j:
if nums[i] + nums[j] <= target:
res += 2**(j-i)
i += 1
else :
j -= 1
return res % (10**9+7)