ホームページ  >  記事  >  バックエンド開発  >  枕を渡す

枕を渡す

WBOY
WBOYオリジナル
2024-07-16 22:22:011068ブラウズ

Pass the Pillow

2582。枕を渡す

簡単

1 から n までのラベルが付けられた列に n 人が立っています。列の最初の人は最初は枕を持っています。枕を持っている人は毎秒、列に並んでいる次の人に枕を渡します。枕が列の最後尾に達すると方向が変わり、人々は反対方向に枕を渡し続けます。

  • たとえば、枕が n 人目に届いたら、n - 1 人目、次に n - 2 人目というように渡します。

2 つの正の整数 n と time を指定すると、time 秒後に枕を持っている人のインデックスを返します。

例 1:

  • 入力: n = 4、時間 = 5
  • 出力: 2
  • 説明: 人々は次の方法で枕を渡します: 1 -> 2 -> 3 -> 4 -> 3 -> 2.

5 秒後、2 人目が枕を抱きます。

例 2:

  • 入力: n = 3、時間 = 2
  • 出力: 3
  • 説明: 人々は次の方法で枕を渡します: 1 -> 2 -> 3.

2 秒後、3 人目が枕を持っています。

例 3:

  • 入力: n = 8、時間 = 9
  • 出力: 6

制約:

  • 2
  • 1

解決策:

class Solution {

    /**
     * @param Integer $n
     * @param Integer $time
     * @return Integer
     */
    function passThePillow($n, $time) {
        $direction = 1;  // 1 for forward, -1 for backward
        $current = 0;    // Starting at the first person

        for ($i = 0; $i < $time; $i++) {
            $current += $direction;

            if ($current == $n - 1) {
                $direction = -1;  // Change direction to backward when reaching the last person
            } elseif ($current == 0) {
                $direction = 1;   // Change direction to forward when reaching the first person
            }
        }

        return $current + 1; // Convert to 1-based index
    }
}
  • LinkedIn
  • GitHub

以上が枕を渡すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。