Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python tìm điểm á quân (runner-up score)


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 < winner và i > runner_up: runner_up = i.

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