2023-09-26 LeetCode每日一题(递枕头)

2023-09-26每日一题

一、题目编号

2582. 递枕头

二、题目链接

点击跳转到题目位置

三、题目描述

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

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

  • 例如,当枕头到达第 n 个人时,TA 会将枕头传递给第 n - 1 个人,然后传递给第 n - 2 个人,依此类推。
    给你两个正整数 n 和 time ,返回 time 秒后拿着枕头的人的编号。
    示例 1:
    在这里插入图片描述

示例 2:
2023-09-26 LeetCode每日一题(递枕头)_第1张图片

四、解题代码

class Solution {
public:
    int passThePillow(int n, int time) {
        int flag = 0;
        int t = n - 1;
        while(time >= 0){
            if(time < t){
                if(flag == 0){
                    return 1 + time; 
                } else{
                    return (n - time);
                }
            }
            time -= (t);
            flag = (flag + 1) % 2;
        }
    return 0;
    }
};

五、解题思路

(1) 用flag来表示是过去,还是回来。
(2) 一次是n - 1的长度。
(3) time的次数如果在n - 1长度内就可以返回结果了。如果是过去,那么编号就是time+1,如果回来,编号就是n - time,每次减去n - 1步。

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)