1823.找出游戏的获胜者
链接:1823.找出游戏的获胜者
难度:Medium
标签:递归、队列、数组、数学、模拟
简介:给你参与游戏的小伙伴总数 n ,和一个整数 k ,返回游戏的获胜者。
题解 1 - cpp
- 编辑时间:2022-05-04
- 内存消耗:5.4MB
- 编程语言:cpp
- 解法介绍:遍历。
int findTheWinner(int n, int k) {
    int list[n], current = n - 1;
    for (int i = 0; i < n; i++) list[i] = i + 1;
    list[n - 1] = 0;
    for (int jump = 0; n > 1; n--) {
        jump = (k - 1) % n;
        while (jump > 0) current = list[current], jump--;
        list[current] = list[list[current]];
    }
    return current + 1;
}
题解 2 - go
- 编辑时间:2022-05-04
- 内存消耗:1.9MB
- 编程语言:go
- 解法介绍:遍历。
func findTheWinner(n int, k int) int {
    list := make([]int, n)
    for i := 0; i < n; i++ {
        list[i] = i + 1
    }
    list[n-1] = 0
    current := n - 1
    for jump := 0; n > 1; n-- {
        jump = (k - 1) % n
        for ; jump > 0; jump-- {
            current = list[current]
        }
        list[current] = list[list[current]]
    }
    return current + 1
}