สมมติว่าเรามีลิสต์คะแนนของผู้เข้าแข่งขัน ต้องหาคะแนนรองอันดับหนึ่ง (Runner-up) คือค่าที่ใหญ่เป็นอันดับ 2
ตัวอย่าง scores = [5,8,2,6,8,5,8,7] ผลลัพธ์ = 7 เพราะคะแนนสูงสุดคือ 8 คะแนนอันดับ 2 คือ 7
ขั้นตอนการแก้ปัญหา
- winner := -99999, runner_up := -99999
- สำหรับแต่ละ i ใน scores:
- ถ้า i > winner: winner, runner_up = i, winner
- ถ้า i < winner และ i > runner_up: runner_up = i
- คืนค่า runner_up
ตัวอย่างโค้ด
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))
อินพุต
[5,8,2,6,8,5,8,7]
เอาต์พุต
7