Python程式:透過給定操作減少列表並找到剩餘的最小數字
假設我們有一個名為nums的正數列表。現在考慮一個操作,我們從中移除任意兩個值a和b,其中a ≤ b,如果a < b有效,則將b-a插入回列表nums中。如果我們可以執行任意數量的操作,我們必須找到可以得到的最小剩餘數字。如果列表為空,則返回0。
因此,如果輸入類似於nums = [2, 4, 5],則輸出將為1,因為我們可以選擇4和5,然後插入1以得到[2, 1]。現在選擇2和1以得到[1]。
為了解決這個問題,我們將遵循以下步驟:
- s := nums中所有元素的總和
- 定義一個函式f()。它將接收i和s作為引數。
- 如果i ≥ nums的大小,則
- 返回s
- n := nums[i]
- 如果s - 2 * n < 0,則
- 返回f(i + 1, s)
- 返回f(i + 1, s - 2 * n)和f(i + 1, s)的最小值
- 在主方法中返回f(0, s)
示例
讓我們看看下面的實現來更好地理解:
def solve(nums): s = sum(nums) def f(i, s): if i >= len(nums): return s n = nums[i] if s - 2 * n < 0: return f(i + 1, s) return min(f(i + 1, s - 2 * n), f(i + 1, s)) return f(0, s) nums = [2, 4, 5] print(solve(nums))
輸入
[2, 4, 5]
輸出
1
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP