跳到主要内容

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
}