2582-递枕头

Raphael Liu Lv10

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
// 模拟
public int passThePillow(int n , int time) {
// 方向1为向后-1为向前
int direction = 1;
// x为当前拿枕头人的编号
int x = 1;
// 只要t没到time时间就一直传递
for (int t = 0 ; t < time ; t++){
// 枕头在第一个人手里
if (x == 1){
// 改变方向为正向
direction = 1;
}
// 枕头在最后一个人手里
if (x == n){
// 改变方向为逆向
direction = -1;
}
x += direction;
}
return x;
}
}
 Comments
On this page
2582-递枕头