Python程式:查詢列表中三個唯一元素,使其和最接近k
假設我們有一個名為 nums 的數字列表和另一個值 k,我們需要在 nums 中找到三個唯一的條目 (a、b、c),使得 |a + b + c − k| 最小化,並返回絕對差值。
因此,如果輸入類似於 nums = [2, 5, 25, 6] k = 14,則輸出將為 1,因為如果我們取 [2, 5, 6] 將使我們最接近 14,並且絕對差值為 |13 − 14| = 1。
為了解決這個問題,我們將遵循以下步驟 -
對列表 nums 進行排序
ans := 1^9
對於範圍從 0 到 nums 大小的 i,執行以下操作
j := i + 1
k := nums 大小 − 1
當 j < k 時,執行以下操作
s := nums[i] + nums[j] + nums[k]
如果 s <= target,則
ans := ans 和 target − s 的最小值
j := j + 1
否則,
ans := ans 和 s − target 的最小值
k := k − 1
返回 ans
讓我們看看下面的實現以獲得更好的理解 -
示例
class Solution: def solve(self, nums, target): nums.sort() ans = 1e9 for i in range(len(nums)): j = i + 1 k = len(nums) − 1 while j < k: s = nums[i] + nums[j] + nums[k] if s <= target: ans = min(ans, target - s) j += 1 else: ans = min(ans, s - target) k −= 1 return ans ob1 = Solution() nums = [2, 5, 25, 6] k = 14 print(ob1.solve(nums, k))
輸入
[2, 5, 25, 6], 14
輸出
1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP