※ 引述《smart0eddie (smart0eddie)》之銘言:
: 2024-07-06
: 2582. Pass the Pillow
: There are n people standing in a line labeled from 1 to n. The first person
: in the line is holding a pillow initially. Every second, the person holding
: the pillow passes it to the next person standing in the line. Once the pillow
: reaches the end of the line, the direction changes, and people continue
: passing the pillow in the opposite direction.
: For example, once the pillow reaches the nth person they pass it to the n
: - 1th person, then to the n - 2th person and so on.
: Given the two positive integers n and time, return the index of the person
: holding the pillow after time seconds.
: 100%的是用暴力解 - -
: 這其實是數學問題
: 走一趟要 n-1 秒
: 走到底折返
: 所以先 time / (n-1) 看可以走完奇數趟還偶數趟
: 奇數反走 偶數正走
: 然後 time % (n-1) 看要多走幾格
: int passThePillow(int n, int time) {
: int dir = (time / (n - 1)) % 2;
: int pos = time % (n - 1);
: if (dir) return n - pos;
: else return pos + 1;
: }
思路:
第一個念頭就直接模擬
最大值才1000
應該不會TLE
正常解的思路差不多
這題就數學問題
Python Code:
class Solution:
def passThePillow(self, n: int, time: int) -> int:
if (time // (n-1)) % 2 == 0:
return time%(n-1)+1
else:
return n - (time%(n-1))