292. Nim Game

LeetCode easy original: C# #csharp #easy #heap #leetcode #queue
题目文本会按所选界面语言从俄语翻译;代码保持不变。

Вы играете в следующую игру Nim со своим другом:

Изначально на столе лежит куча камней.

Вы и ваш друг поочередно делаете ходы, и вы ходите первым.

Каждый ход игрок, чей ход, будет убирать от 1 до 3 камней из кучи.

Тот, кто убирает последний камень, становится победителем.

given n, количество камней в куче. return true, если вы можете выиграть игру, предполагая, что и вы, и ваш друг играете оптимально, иначе return false.

示例:

Input: n = 4

Output: false

Explanation: These are the possible outcomes:

1. You remove 1 stone. Your friend removes 3 stones, including the last stone. Your friend wins.

2. You remove 2 stones. Your friend removes 2 stones, including the last stone. Your friend wins.

3. You remove 3 stones. Your friend removes the last stone. Your friend wins.

In all outcomes, your friend wins.

C# 解法

匹配/原始
public class Solution {
    public bool CanWinNim(int n) {
        return n % 4 != 0;
    }
}

C++ 解法

自动草稿,提交前请检查
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public bool CanWinNim(int n) {
        return n % 4 != 0;
    }
}

Java 解法

匹配/原始
public class Solution {
    public boolean canWinNim(int n) {
        return n % 4 != 0;
    }
}

JavaScript 解法

匹配/原始
class Solution {
    canWinNim(n) {
        return n % 4 !== 0;
    }
}

Python 解法

匹配/原始
class Solution:
    def canWinNim(self, n: int) -> bool:
        return n % 4 != 0

Go 解法

匹配/原始
package main

func canWinNim(n int) bool {
    return n % 4 != 0
}

Algorithm

Определите базовый случай:

Если количество камней n меньше или равно 3, вы всегда можете выиграть, убрав все камни. В этом случае return true.

Анализ оставшихся камней:

Если количество камней n делится на 4 без остатка (n % 4 == 0), вы не можете выиграть, так как независимо от вашего хода ваш друг всегда сможет оставить вам кратное 4 количество камней. В этом случае return false.

Выигрышная стратегия:

Если количество камней n не кратно 4 (n % 4 != 0), вы можете выиграть, оставляя вашему другу кратное 4 количество камней после вашего хода. В этом случае return true.

😎

Vacancies for this task

活跃职位 with overlapping task tags are 已显示.

所有职位
目前还没有活跃职位。