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

Python - หาค่าสูงสุดอันดับ 3 ในลิสต์จำนวนเต็ม

หาค่าที่ใหญ่เป็นอันดับ 3 (Third Maximum) ในลิสต์จำนวนเต็ม โดยไม่เรียงลิสต์ทั้งหมด ใช้ตัวแปรเก็บค่าสูงสุด 3 อันดับ แบบ O(n)

ตัวอย่างโค้ด

def third_max_num(my_num):
    my_result = [float('-inf'), float('-inf'), float('-inf')]
    for num in my_num:
        if num not in my_result:
            if num > my_result[0]:
                my_result = [num, my_result[0], my_result[1]]
            elif num > my_result[1]:
                my_result = [my_result[0], num, my_result[1]]
            elif num > my_result[2]:
                my_result = [my_result[0], my_result[1], num]
    if float('-inf') in my_result:
        print(max(my_num))
    else:
        print(my_result[2])

my_list = [45, 31, 78, 9, 0, 54, 12, 18]
print("The list is :")
print(my_list)
print("The third maximum number is :")
third_max_num(my_list)

ผลลัพธ์

The list is : [45, 31, 78, 9, 0, 54, 12, 18]
The third maximum number is : 45

คำอธิบาย

  • เริ่มต้นลิสต์ my_result 3 ค่าเป็น -inf
  • วนลูปทุกตัวในลิสต์ ข้ามค่าที่มีอยู่ใน my_result แล้ว (Distinct)
  • อัปเดตลิสต์ 3 อันดับตามลำดับ: มากที่สุด, อันดับ 2, อันดับ 3
  • ถ้ายังมี -inf อยู่ แสดงว่าข้อมูลไม่ถึง 3 ค่าที่ต่างกัน → พิมพ์ค่าสูงสุดแทน