LC.P2582[递枕头]

方法一:模拟

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public int passThePillow(int n, int time) {
int ans = 1, k = 1;
while (time-- > 0) {
ans += k;
if (ans == 1 || ans == n) {
k *= -1;
}
}
return ans;
}
}
  • 时间复杂度:$O(time)$
  • 空间复杂度:$O(1)$

方法二:数学

1
2
3
4
5
6
7
class Solution {
public int passThePillow(int n, int time) {
int k = time / (n - 1);
int mod = time % (n - 1);
return (k & 1) == 1 ? n - mod : mod + 1;
}
}
  • 时间复杂度:$O(1)$
  • 空间复杂度:$O(1)$