การหาผลคูณสูงสุดของสององค์ประกอบที่ต่างกัน
กำหนดรายการ nums หาผลคูณสูงสุดของสององค์ประกอบที่ต่างกัน (distinct elements)
อัลกอริทึม
- เรียง nums
- ผลคูณมากสุดจะเป็นหนึ่งในสองกรณี:
- สองตัวเล็กสุด (อาจเป็นลบ × ลบ = บวกใหญ่)
- สองตัวใหญ่สุด (บวก × บวก)
- เปรียบเทียบทั้งสองค่า
ตัวอย่างโค้ด
def solve(nums):
nums_sort = sorted(nums)
max_left = nums_sort[0] * nums_sort[1]
max_right = nums_sort[-1] * nums_sort[-2]
ans = max(max_left, max_right)
return ans
nums = [8, -3, 1, -5]
print(solve(nums))
ผลลัพธ์
15
คำอธิบาย
เรียง: [-5, -3, 1, 8]
- สองตัวเล็กสุด: -5 × -3 = 15
- สองตัวใหญ่สุด: 1 × 8 = 8
- สูงสุด = 15