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
- 如果 x > k,則
返回 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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP