版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou_pp/article/details/85161567
Description
给定数组arr和整数num,求arr的连续子数组中满足:其最大值减去最小值的结果大于num的个数。请实现一个时间复杂度为O(length(arr))的算法。
Input
输入的第一行为数组,每一个数用空格隔开,第二行为num。
Output
输出一个值。
Sample Input 1
3 6 4 3 2
2
Sample Output 1
6
def compare(numList,number):
if(len(numList)==1):
# print(len(numList))
# print("false")
return "false"
else:
max = numList[0]
min = numList[0]
for n in numList:
if (n > max):
max = n
if (n < min):
min = n
if (max - min > number):
return "true"
else:
return "false"
if __name__ == "__main__":
arr = input()
numList = [int(n) for n in arr.split()]
number = input()
number = int(number)
count = 0
lenth = len(numList)
for i in range(lenth):
for j in range(i,lenth):
temp = compare(numList[i:j+1],number)
if(temp == "true"):
count = count + 1
print(count)