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}。

元素大于 7 的集合有 4 个。

为了解决这个问题,我们将按照以下步骤操作 -

  • 计数:= 0

  • 连续:= 0

  • 对于 input_array 中的每个 x,执行

    • 连续 := 连续 + 1

    • 计数 := 计数 + 连续

    • 连续:= 0

    • 如果 x > k,则

    • 否则,

    返回 input_array 的大小 * ((input_array 的大小 + 1) / 2) 的下限值 - 计数

    示例

    让我们看看以下实现以获得更好的理解 -

    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 - 计数
    print(solve([5, 6, 7, 8], 7))

    输入

    [5, 6, 7, 8], 7
    输出结果
    4