ให้อาร์เรย์ nums (เพิ่มขึ้นเข้มงวด) และ values หา max(values[i] + values[j] + nums[j] - nums[i]) สำหรับ i ≤ j
ตัวอย่าง: nums=[1,2,7], values=[-4,6,5] → 16 (i=1,j=2: 6+5+7-2=16)
ขั้นตอน (O(n))
นิพจน์ = (values[i] - nums[i]) + (values[j] + nums[j]) แยกเป็น 2 ส่วนอิสระ
ans1 = max(values[i] - nums[i])ans2 = max(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)) # Output: 16อินพุต
[1, 2, 7], [-4, 6, 5]
เอาต์พุต
16