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
  • 對於 input_array 中的每個 x,執行:
    • 如果 x > k,則
      • consecutive := 0
    • 否則,
      • consecutive := consecutive + 1
      • count := count + consecutive

返回 input_array 的大小 * ((input_array 的大小 + 1) / 2) 的向下取整值 - count

示例

讓我們來看下面的實現,以便更好地理解:

線上演示

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

更新於:2021年5月18日

255 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.