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

หาคู่ตัวเลขที่มีความต่างมากที่สุดในลิสต์ Python

หาคู่ที่มีความต่างสัมบูรณ์มากที่สุด

กำหนดลิสต์ตัวเลข หาคู่ (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