หาคู่ที่มีความต่างสัมบูรณ์มากที่สุด
กำหนดลิสต์ตัวเลข หาคู่ (a,b) ที่ทำให้ |a-b| มากที่สุด
วิธีที่ 1: ใช้ heapq.nlargest กับ combinations
from itertools import combinations
from heapq import nlargest
lst = [21,14,30,11,17,18]
pairs = nlargest(2, combinations(lst,2), key=lambda p: abs(p[0]-p[1]))
print(pairs) # [(30,11), (14,30)]
วิธีที่ 2: ใช้ max() กับ combinations (ได้ 1 คู่)
best = max(combinations(lst,2), key=lambda p: abs(p[0]-p[1]))
print(best) # (30, 11)
สังเกต
คู่ที่มีความต่างมากที่สุดจะเป็นคู่ของ min(lst) และ max(lst) เสมอ สามารถหาได้ใน O(N) โดยไม่ต้อง combinations