檢查 Python 中陣列的元素是否可以根據給定條件進行排列
假設我們有一個名為 nums 的陣列。我們必須檢查是否可以重新排列 nums 的元素,使其滿足以下條件:
因此,如果輸入類似於 nums = [8, -4, 4, -8],則輸出將為 True,因為如果我們將陣列排列為 [-4, -8, 4, 8],則對於 i = 0,nums[2*0 + 1] = 2 * (-4) = -8,對於 i = 1,nums[2*1 + 1] = 2 * 4 = 8
為了解決這個問題,我們將遵循以下步驟:
- freq := 一個包含 nums 的元素及其頻率的對映
- 對於 nums 中按絕對值排序的每個專案,執行以下操作:
- 如果 freq[item] 為 0,則
- 進行下一次迭代
- 如果 freq[2 * item] 為 0,則
- 返回 False
- freq[item] := freq[item] - 1
- freq[2 * item] := freq[2 * item] - 1
- 如果 freq[item] 為 0,則
- 返回 True
示例
讓我們看看以下實現以獲得更好的理解:
from collections import defaultdict def solve(nums): freq = defaultdict(int) for item in nums: freq[item] += 1 for item in sorted(nums, key = abs): if freq[item] == 0: continue if freq[2 * item] == 0: return False freq[item] -= 1 freq[2 * item] -= 1 return True nums = [8, -4, 4, -8] print(solve(nums))
輸入
[8, -4, 4, -8]
輸出
True
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP