栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

0504|1823. 找出游戏的获胜者

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

0504|1823. 找出游戏的获胜者

0504|1823. 找出游戏的获胜者

这道题使用队列也可以。

  • 遍历 quene 时,从队尾拿出一个成员,然后再从对头插入。如此循环。

这里使用的是链表:

var findTheWinner = function (n, k) {
  // 边界
  if (k === 1) return n;
  // 构造一个循环链表
  const head = new TreeNode(1);
  let point = head;
  for (let i = 2; i <= n; i++) {
    point.next = new TreeNode(i);
    point = point.next;
  }
  point.next = head;


  // 循环
  point = head;
  while (point !== point.next) {  // 当一个结点.next指向自己时,表明链表成员只有一个。
    let pre = point; // pre 用于删除结点
    for (let i = 0; i < k - 1; i++) {  // 遍历,point 指向了待删除节点
      pre = point;
      point = point.next;
    }
    // 删除结点
    pre.next = point.next;
    point = pre.next;
  }
  return point.val;

  // 创建一个结点
  function TreeNode(val) {
    this.val = val;
    this.next = null;
  }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887103.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号