2582. 递枕头

简介: 2582. 递枕头

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

问题描述

n 个人站成一排,按从 1n 编号。

最初,排在队首的第一个人拿着一个枕头。每秒钟,拿着枕头的人会将枕头传递给队伍中的下一个人。一旦枕头到达队首或队尾,传递方向就会改变,队伍会继续沿相反方向传递枕头。

  • 例如,当枕头到达第 n 个人时,TA 会将枕头传递给第 n - 1 个人,然后传递给第 n - 2 个人,依此类推。

给你两个正整数 ntime ,返回 time 秒后拿着枕头的人的编号。

示例 1:

输入: n = 4, time = 5
输出: 2
解释: 队伍中枕头的传递情况为:1 -> 2 -> 3 -> 4 -> 3 -> 2 。
5 秒后,枕头传递到第 2 个人手中。

示例 2:

输入: n = 3, time = 2
输出: 3
解释: 队伍中枕头的传递情况为:1 -> 2 -> 3 。
2 秒后,枕头传递到第 3 个人手中。

提示:

  • 2 <= n <= 1000
  • 1 <= time <= 1000

思路分析

首先我们应该要先理解一下题目意思,题目会给我们一个整数n,代表有n个人,编号为1 ~ n;一个整数time,代表需要将枕头传递time次,每次传递到头或尾时需要转变方向继续传递。

首先我们先计算一下将枕头传递完整一遍需要的次数为多少,如下图,有5个人的情况下,将枕头从头传递到尾我们需要传递4次,那么有n个人的话,我们将枕头从头传递到尾我们则需要传递n - 1次。

  • 计算枕头会传递几轮

我们可以先计算枕头会完整地传递几轮,通过轮数判断最后枕头传递方向是从前往后还是从后往前。第一轮为从前往后,第二轮为从后往前,所以我们可以知道如果是偶数轮数的话,那么其下一轮就是从前往后传递,反之则是从后往前传递。

const turn = Math.floor(time / (n - 1));
  • 计算最后不够一轮的传递次数

直接使用总传递次数对每轮传递次数求余即可。

const m = time % (n - 1);
  • 计算最后枕头所在位置

如果当前枕头传递方向是从前往后时,那么枕头所在位置即为不足一轮传递次数 + 1,这里为什么要加一呢?因为编号是从1开始,如果传递次数为0的话,枕头应该是在1号手上;如果当前枕头传递方向是从后往前时,那么我们直接用总人数减m就可以。

if (turn % 2 === 1) return n - m;
return (m + 1) % n;

AC 代码

完整 AC 代码如下:

/**
 * @param {number} n
 * @param {number} time
 * @return {number}
 */
var passThePillow = function (n, time) {
  const turn = Math.floor(time / (n - 1));
  const m = time % (n - 1);
  if (turn % 2 === 1) return n - m;
  return (m + 1) % n;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
程序人生 - 阿萨姆奶茶 & 元气森林乳茶
程序人生 - 阿萨姆奶茶 & 元气森林乳茶
143 0
程序人生 - 阿萨姆奶茶 & 元气森林乳茶
|
物联网 大数据 程序员
不如到雄县的街头走一走
雄安新区的设立让雄县、安新、容城三个小城一夜之间举世瞩目,新区未来的5年,将迎来发展关键期,这个定位为“创新高地”的雄安新区,未来的发展怎么能少得了程序员这样的科技型从业人员?
3159 0
彩铅练习,花船
图片发自简书App 图片发自简书App
677 0
彩铅练习,期盼
女孩儿画的有点壮 image.png
690 0
彩铅练习,柠檬
好丑啊,不说啥了 image.png
729 0
彩铅,胖小鸟
这次画了一只小鸟,胖胖的小鸟,跟我一样胖呢。 图片发自简书App 图片发自简书App
1014 0
彩铅练习,夜色中的小鸟
这张好丑,颜色练习 图片发自简书App
892 0
彩铅练习,树叶
练习叠色和过渡,有点儿失败 image.png
868 0
彩铅练习,棒棒糖
这一次画了三个棒棒糖,线稿比较容易,还是练习的立体感。绿色的棒棒糖一开始上色上错了,上成了灰色,还好才上一个边缘部分,而且颜色不深,还有改正的机会。阴影部分感觉画的不太好,有点儿生硬,还需练习。
932 0

热门文章

最新文章