https://leetcode.cn/problems/pass-the-pillow/description/
n个人站成一排,按从1到n编号。最初,排在队首的第一个人拿着一个枕头。每秒钟,拿着枕头的人会将枕头传递给队伍中的下一个人。一旦枕头到达队首或队尾,传递方向就会改变,队伍会继续沿相反方向传递枕头。
- 例如,当枕头到达第
n个人时,TA 会将枕头传递给第n - 1个人,然后传递给第n - 2个人,依此类推。给你两个正整数
n和time,返回time秒后拿着枕头的人的编号。示例 1:
1
2
3
4 >输入:n = 4, time = 5
>输出:2
>解释:队伍中枕头的传递情况为:1 -> 2 -> 3 -> 4 -> 3 -> 2 。
>5 秒后,枕头传递到第 2 个人手中。示例 2:
1
2
3
4 >输入:n = 3, time = 2
>输出:3
>解释:队伍中枕头的传递情况为:1 -> 2 -> 3 。
2 秒后,枕头传递到第 3 个人手中。提示:
2 <= n <= 10001 <= time <= 1000
由于两端不占用额外的时间,也就是说 n 个人传递一遍的时间是 n - 1 所以当经过 2(n-1) 时,枕头将再次传回最开始的位置。
- 当
time < n时,表示枕头在进行正向传递,位置为time + 1 - 当
time >= n时,表示枕头在进行反向传递,反向传递的次数为time - (n - 1),那么当前的位置就是n - (time - (n - 1))
1 | class Solution { |