Cho list điểm số scores. Tìm điểm lớn thứ hai (runner-up), bỏ qua các giá trị trùng lặp của điểm cao nhất.
Ví dụ: [5,8,2,6,8,5,8,7] → max = 8, runner-up = 7.
Thuật toán một lần duyệt
- Giữ 2 biến:
winner(max),runner_up(max thứ 2). - Duyệt từng điểm
i:- Nếu
i > winner:runner_up = winner; winner = i. - Nếu
i < winnervài > runner_up:runner_up = i.
- Nếu
Ví dụ mã nguồn
def solve(scores):
winner = -99999
runner_up = -99999
for i in scores:
if i > winner:
winner, runner_up = i, winner
elif i < winner and i > runner_up:
runner_up = i
return runner_up
scores = [5,8,2,6,8,5,8,7]
print(solve(scores)) # 7
Đầu vào / Đầu ra
Input: [5,8,2,6,8,5,8,7]
Output: 7