สมมติว่าเรามีรายการตัวเลขสองรายการที่เรียกว่า A และ B และมีความยาวเท่ากัน เราต้องหาค่าสูงสุดของ 0 ≤ i
ดังนั้น หากอินพุตเป็น A =[2, 4, 10, 6] B =[3, 4, 7, 5] ผลลัพธ์จะเป็น 14 เช่นเดียวกับเมื่อ i =0 และ j =2 และเราได้รับ | 2 - 10| + |3 - 7| + |1 - 3|.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ตอบ :=0
- n :=ขนาดของ a
- สำหรับแต่ละคู่ (s, t) ใน [(-1, -1) ,(-1, 1) ,(1, -1) ,(1, 1) ] ทำ
- cur_min :=อินฟินิตี้
- cur_max :=-อินฟินิตี้
- สำหรับฉันในช่วง 0 ถึง n ให้ทำ
- tmp :=s * a[i] + t * b[i] + i
- cur_min :=ขั้นต่ำของ cur_min, tmp
- cur_max :=สูงสุดของ cur_max, tmp
- ans :=สูงสุดของ ans, (cur_max - cur_min)
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, a, b): ans = 0 n = len(a) for s, t in [(-1, -1), (-1, 1), (1, -1), (1, 1)]: cur_min = float("inf") cur_max = float("-inf") for i in range(n): tmp = s * a[i] + t * b[i] + i cur_min = min(cur_min, tmp) cur_max = max(cur_max, tmp) ans = max(ans, cur_max - cur_min) return ans ob = Solution() A = [2, 4, 10, 6] B = [3, 4, 7, 5] print(ob.solve(A, B))
อินพุต
[2, 4, 10, 6],[3, 4, 7, 5]
ผลลัพธ์
14