Python程式:查詢K數對的最大數量
假設我們有一個名為nums的陣列和另一個值k。在一個操作中,我們可以選擇nums中的兩個元素,其和等於k,並將它們從陣列中刪除。我們必須找到可以對陣列執行的最大運算元。
因此,如果輸入類似於nums = [8,3,6,1,5] k = 9,則輸出將為2,因為我們可以刪除總和為9的[3,6],然後刪除總和也為9的[8,1]。
為了解決這個問題,我們將遵循以下步驟:
- counter := 一個對映,儲存nums中每個專案的頻率
- res := 0
- 對於counter中的每個num,執行:
- 如果counter[k-num]不為零,則
- 如果num與k - num不同,則
- res := res + counter[num]和counter[k-num]中的最小值
- counter[k-num] := 0
- counter[num] := 0
- 否則,
- res := res + (counter[num] / 2) 的商
- 如果num與k - num不同,則
- 如果counter[k-num]不為零,則
- 返回res
示例
讓我們看看下面的實現,以便更好地理解:
from collections import Counter def solve(nums, k): counter = Counter(nums) res = 0 for num in counter: if counter.get(k-num, 0): if num != k - num: res += min(counter[num], counter[k-num]) counter[k-num] = 0 counter[num] = 0 else: res += int(counter[num] / 2) return res nums = [8,3,6,1,5] k = 9 print(solve(nums, k))
輸入
[8,3,6,1,5], 9
輸出
2
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP