Khi cần tìm số lớn thứ ba (distinct) trong danh sách số nguyên, ta khởi tạo một danh sách ba giá trị âm vô cực (float('-inf')) để lưu ba giá trị lớn nhất riêng biệt. Duyệt qua danh sách, cập nhật ba giá trị lớn nhất. Nếu không đủ ba giá trị riêng biệt, trả về số lớn nhất.
Ví dụ
Minh họa:
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("Danh sách:", my_list)
print("Số lớn thứ ba:")
third_max_num(my_list)
Kết quả
Danh sách: [45, 31, 78, 9, 0, 54, 12, 18] Số lớn thứ ba: 45
Giải thích
- Định nghĩa phương thức
third_max_numnhận danh sách. - Khởi tạo danh sách
my_resultba giá trị-inf. - Duyệt qua từng số: nếu số chưa có trong
my_result, so sánh và cập nhật ba giá trị lớn nhất. - Sau duyệt, nếu vẫn còn
-infnghĩa là không đủ 3 giá trị riêng biệt -> in max của danh sách gốc. - Ngược lại in giá trị thứ 3 (index 2).