首页 > 试题广场 >

最大值减去最小值小于或等于num的子数组数量

[编程题]最大值减去最小值小于或等于num的子数组数量
  • 热度指数:4643 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定数组 arr 和整数 num,共返回有多少个子数组满足如下情况:
max(arr[i...j]) - min(arr[i...j]) <= num
max(arr[i...j])表示子数组arr[i...j]中的最大值,min[arr[i...j])表示子数组arr[i...j]中的最小值。


输入描述:
第一行输入两个数 n 和 num,其中 n 表示数组 arr 的长度
第二行输入n个整数X_i,表示数组arr中的每个元素


输出描述:
输出给定数组中满足条件的子数组个数
示例1

输入

5 2 
1 2 3 4 5

输出

12

备注:


arrnum,num=map(int,input().split())
arr=list(map(int,input().split()))
n=0
for i in range(len(arr)):
    for j in range(i+1,len(arr)+1):
        if max(arr[i:j])-min(arr[i:j]) <=num:
            n+=1
print(n)
发表于 2020-03-04 07:14:12 回复(0)