สมมติว่าเรามีอาร์เรย์สองชุดที่เรียกว่า nums และ values ทั้งสองชุดประกอบด้วยจำนวนเต็มและค่าของ nums จะเพิ่มขึ้นอย่างมาก และความยาวของพวกมันก็เท่ากัน เราต้องหาค่าของ v สำหรับคู่ของดัชนี i, j เช่นว่า:i ≤ j ที่เพิ่ม v =ค่า[i] + ค่า[j] + nums[j] - nums[i] ให้สูงสุด
ดังนั้น หากอินพุตเป็น nums =[1, 2, 7] ค่า =[-4, 6, 5] ผลลัพธ์จะเป็น 16 หากเราเลือก i =1 และ j =2 เราจะได้ 6 + 5 + 7 - 2 =16.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ans1 :=-inf, ans2 :=-inf
-
สำหรับฉันในช่วง 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