Python程式:查詢陣列表示式最大值對應的值
假設我們有兩個陣列,分別稱為 nums 和 values,兩者都包含整數,並且 nums 的值嚴格遞增,它們的長度也相同。我們必須找到一對索引 i、j(其中 i ≤ j)對應的 v 值,使得 v = values[i] + values[j] + nums[j] - nums[i] 最大化。
因此,如果輸入類似於 nums = [1, 2, 7] values = [-4, 6, 5],則輸出將為 16,如果我們選擇 i = 1 和 j = 2,則得到 6 + 5 + 7 - 2 = 16。
為了解決這個問題,我們將遵循以下步驟:
ans1 := -inf,ans2 := -inf
對於 i 從 0 到 nums 的大小 - 1,執行以下操作:
ans1 := ans1 和 (values[i] - nums[i]) 中的最大值
ans2 := ans2 和 (values[i] + nums[i]) 中的最大值
返回 ans1 + ans2
示例
讓我們看看下面的實現,以更好地理解。
from math import inf
def solve(nums, values):
ans1 = -inf
ans2 = -inf
for i in range(len(nums)):
ans1 = max(ans1, (values[i] - nums[i]))
ans2 = max(ans2, (values[i] + nums[i]))
return ans1 + ans2
nums = [1, 2, 7]
values = [-4, 6, 5]
print(solve(nums, values))輸入
[1, 2, 7], [-4, 6, 5]
輸出
16
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP