Python程序:找出大于给定值的集合的数量
假设有一个包含多个整数的数组。我们从给定的数字数组中找到所有连续的子数组,并将它们放入另一个列表中。现在,我们用该子数组中的最大元素替换每个子数组。我们还给出一个数字k,我们需要找出现在有多少个子数组大于给定数字。
因此,如果输入为input_array = [5,6,7,8],k = 7,那么输出将为4。
给定输入数组的连续子数组为:{5},{6},{7},{8},{5,6},{6,7},{7,8},{5,6,7},{6,7,8},{5,6,7,8}。
如果我们用其中的最大元素更新子数组,则子数组变为−
{5},{6},{7},{8},{6},{7},{8},{7},{8},{8}。
有4个集合,其中元素大于7。
解决此问题,我们将遵循以下步骤−
- count := 0
- consecutive := 0
- for each x in input_array, do
- if x > k, then
- consecutive := 0
- 否则,
- consecutive := consecutive + 1
- count := count + consecutive
- if x > k, then
返回input_array的大小*((input_array的大小+1)/2的floor值) —— count
更多Python相关文章,请阅读:Python 教程
示例
让我们看以下实现,以更好地理解−
def solve(input_array, k):
count = 0
consecutive = 0
for x in input_array:
if x > k:
consecutive = 0
else:
consecutive += 1
count += consecutive
return len(input_array) * (len(input_array) + 1) // 2 - count
print(solve([5, 6, 7, 8], 7))
输入
[5, 6, 7, 8], 7
输出
4