首页  >  文章  >  后端开发  >  寻找循环游戏的获胜者

寻找循环游戏的获胜者

WBOY
WBOY原创
2024-07-16 10:42:11400浏览

1823。寻找循环游戏的获胜者

有 n 个好友正在玩游戏。朋友们围坐成一圈,并按顺时针顺序从1到n编号。更正式地说,从第 ith 个朋友顺时针移动,您将到达第 (i+1)th 个朋友,其中 1 n,从第 n第 个朋友顺时针移动,您将到达第 1 个

个朋友。

游戏规则如下:
  1. 从第一个朋友开始
  2. 按顺时针方向数出接下来的 k 个朋友包括
  3. 您开始的朋友。计数会绕一圈,可能会多次计数一些朋友。
  4. 您数到的最后一个朋友离开圈子并输掉游戏。
  5. 如果圈子里还有多个朋友,请返回第2步从刚失去的朋友的顺时针开始
  6. 并重复。
  7. 否则,圈子里的最后一个朋友就赢得了游戏。

给定朋友的数量 n 和整数 k,返回游戏的获胜者

示例1:

Find the Winner of the Circular Game

  • 输入:
  • n = 5,k = 2
  • 输出:
  • 3
  • 说明:
      以下是游戏步骤:
    1. 从朋友 1 开始。
    2. 顺时针数出2个朋友,分别是朋友1和2。
    3. 好友 2 离开圈子。下一个开始的是朋友 3。
    4. 顺时针数2个朋友,分别是朋友3和4。
    5. 好友 4 离开圈子。下一个开始的是朋友5。
    6. 顺时针数出2个朋友,分别是朋友5和1。
    7. 好友 1 离开圈子。下一个开始的是朋友 3。
    8. 顺时针数2个朋友,分别是朋友3和朋友5。
    9. 好友 5 离开圈子。只剩下朋友 3,所以他们是获胜者。

示例2:

  • 输入:
  • n = 6,k = 5
  • 输出:
  • 1
  • 说明:
  • 朋友们按顺序离开:5、4、6、2、3。获胜者是朋友 1。

约束:

  • 1

    跟进:

    你能在空间恒定的线性时间内解决这个问题吗?

    解决方案:

class Solution {

    /**
     * @param Integer $n
     * @param Integer $k
     * @return Integer
     */
    function findTheWinner($n, $k) {
        $winner = 0;
        for ($i = 1; $i <= $n; $i++) {
            $winner = ($winner + $k) % $i;
        }
        return $winner + 1; // +1 because array index starts from 0
    }
}

联系链接

  • 领英
  • GitHub

以上是寻找循环游戏的获胜者的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn