#1823
Medium Algorithms Find the winner of the circular game
Array Math Recursion Queue Simulation
82.2% acceptance
Feb 25, 2026
4090
127
There are n friends that are playing a game. The friends are sitting in a circle and are numbered from 1 to n in clockwise order.
The rules of the game are as follows:
Start at the 1st friend.
Count the next k friends in the clockwise direction including the friend you started at.
The last friend you counted leaves the circle and loses the game.
If there is still more than one friend in the circle, go back to step 2 starting from the friend immediately clockwise of the friend who just lost and repeat.
Else, the last friend in the circle wins the game.
Given the number of friends, n, and an integer k, return the winner of the game.
Solution
Rust
Time O(n)
Space O(1)
impl Solution {
pub fn find_the_winner(n: i32, k: i32) -> i32 {
let mut pos = 0i32;
for i in 2..=n {
pos = (pos + k) % i;
}
pos + 1
}
}