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

2023-09-26每日一题

一、题目编号

2582. 递枕头

二、题目链接

点击跳转到题目位置

三、题目描述

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

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

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

示例 2:
在这里插入图片描述

四、解题代码

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步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值