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

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容