Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาค่า v ที่ทำให้นิพจน์ Array สูงสุดใน Python

ให้อาร์เรย์ 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 ส่วนอิสระ

  1. ans1 = max(values[i] - nums[i])
  2. ans2 = max(values[i] + nums[i])
  3. คืน 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