列表

详情


6307. 递枕头

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

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

给你两个正整数 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 个人手中。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int passThePillow(int n, int time) { } };

php 解法, 执行用时: 0 ms, 内存消耗: 19 MB, 提交时间: 2023-09-26 09:28:51

class Solution {

    /**
     * @param Integer $n
     * @param Integer $time
     * @return Integer
     */
    function passThePillow($n, $time) {
        $k = intval($time/($n-1));
        $t = $time%($n-1);
        return $k % 2 == 0 ? $t + 1 : $n - $t; 
    }
}

javascript 解法, 执行用时: 60 ms, 内存消耗: 40.9 MB, 提交时间: 2023-09-26 09:28:08

/**
 * @param {number} n
 * @param {number} time
 * @return {number}
 */
var passThePillow = function(n, time) {
    var k = parseInt(time/(n-1)), t = time%(n-1);
    return k % 2 == 0 ? t + 1 : n - t; 
};

cpp 解法, 执行用时: 4 ms, 内存消耗: 6.2 MB, 提交时间: 2023-09-26 07:37:59

class Solution {
public:
    int passThePillow(int n, int time) {
        int k = time/(n-1), t = time%(n-1);
        return k % 2 == 0 ? t + 1 : n - t; 
    }
};

java 解法, 执行用时: 0 ms, 内存消耗: 38.2 MB, 提交时间: 2023-03-09 09:37:37

class Solution {
    public int passThePillow(int n, int time) {
        int k = time/(n-1), t = time%(n-1);
        return k % 2 == 0 ? t + 1 : n - t;
    }
}

golang 解法, 执行用时: 4 ms, 内存消耗: 1.8 MB, 提交时间: 2023-03-09 09:35:16

func passThePillow(n, time int) int {
	t := time % (n - 1)
	if time/(n-1)%2 > 0 {
		return n - t
	}
	return 1 + t
}

python3 解法, 执行用时: 40 ms, 内存消耗: 14.9 MB, 提交时间: 2023-03-09 09:34:54

# 到达端点耗时n-1, k = time/(n-1), k为偶数,则是1->n, 否则n->1
class Solution:
    def passThePillow(self, n: int, time: int) -> int:
        k, t = divmod(time, n-1)  # k是商, t是余数
        return t + 1 if k % 2 == 0 else n - t

上一题