美文网首页
100个小朋友围成圈,挪走第三个,直到最后一个

100个小朋友围成圈,挪走第三个,直到最后一个

作者: _____西班木有蛀牙 | 来源:发表于2021-04-20 11:31 被阅读0次

100个小朋友围成圈,挪走第三个,直到最后一个

const list = {};
for (var i = 1; i <= 100; i += 1) {
  list[i] = {
    next: i === 100 ? 1 : i + 1, // 下一个
    pre: i === 1 ? 100 : i - 1, // 上一个
    value: i,
  }
}

/**
 * start 起点
 * peopleList 人员集合
 * count 数量
 */
function getPeople(start, peopleList, count) {
  const data = JSON.parse(JSON.stringify(peopleList))
  let leng = 100; // 剩余人数
  let _count = 1; // 计数
  let i = start; // 当前位置
  while (leng !== 1) {
    console.log(i, data[i])
    const { next, pre } = data[i]; // 当前位置给下一个坐标
    if (_count === count) {
      data[pre].next = next;
      data[next].pre = pre;
      delete data[i];
      _count = 1; // 计数归零
      leng -= 1;
    } else {
      _count += 1;
    }
    i = next;
  }
  return i;
}

getPeople(1, list, 3)
image.png

相关文章

  • 100个小朋友围成圈,挪走第三个,直到最后一个

    100个小朋友围成圈,挪走第三个,直到最后一个

  • 算法面试题-T个人围成一圈报数第M个人走

    算法题目: T个人围成一圈,依次报数第M个人离开,直到剩下一个人,求离开的次序或者最后离开的人 思路分析: 一共有...

  • 使用环形单向链表演示约瑟夫环问题Scala版本

    思路 约瑟夫环问题 :题目是 假设有N个小朋友按顺序围成一圈,每个小朋友都有一个编号,假设从第m个小朋友从1开始...

  • CCF 游戏 201712-2

    问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号...

  • N个人围成一圈报数

    1. 有N个人围成一圈,顺序排号,从第一个人开始报数,凡是报到M的人退出圈子,问最后留下的几号? 2. N个人围成...

  • 过往

    小时候玩击鼓传花的游戏,挺开心的,小朋友围成圈坐着,老师击鼓,然后小朋友们就开始传花,当鼓声停止时,花在谁的手里就...

  • 剑指offer.C++.code46-50

    46. 圆圈中最后剩下的数【约瑟夫环问题】 有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数...

  • 038心有千千结

    今天心理课上玩了一个有趣的游戏,十几个人围成一个圈,记住彼此身边的人,然后打乱顺序再重新围成一个圈。用你的左手和右...

  • 面试题约瑟夫: n个人围成一圈,报到m的人出列

    有N个人围成一圈,第一个人从1开始报数,报到M的人出列,求最后一个出列的人。java实现的:

  • 【思维训练】几和第几

    题目1: 有一本连环画,16个小朋友都想先看,于是他们围成一圈,然后从某个小朋友开始沿顺时针方向进行1~3报数,凡...

网友评论

      本文标题:100个小朋友围成圈,挪走第三个,直到最后一个

      本文链接:https://www.haomeiwen.com/subject/ovzglltx.html