Python程序:找出大于给定值的集合的数量

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

返回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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程