列表

详情


3001. 捕获黑皇后需要的最少移动次数

现有一个下标从 0 开始的 8 x 8 棋盘,上面有 3 枚棋子。

给你 6 个整数 abcdef ,其中:

假定你只能移动白色棋子,返回捕获黑皇后所需的最少移动次数。

请注意

 

示例 1:

输入:a = 1, b = 1, c = 8, d = 8, e = 2, f = 3
输出:2
解释:将白色车先移动到 (1, 3) ,然后移动到 (2, 3) 来捕获黑皇后,共需移动 2 次。
由于起始时没有任何棋子正在攻击黑皇后,要想捕获黑皇后,移动次数不可能少于 2 次。

示例 2:

输入:a = 5, b = 3, c = 3, d = 4, e = 5, f = 2
输出:1
解释:可以通过以下任一方式移动 1 次捕获黑皇后:
- 将白色车移动到 (5, 2) 。
- 将白色象移动到 (5, 2) 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 2.5 MB, 提交时间: 2024-01-14 12:43:51

func minMovesToCaptureTheQueen(a, b, c, d, e, f int) int {
	if a == e && (c != e || ok(b, d, f)) ||
		b == f && (d != f || ok(a, c, e)) ||
		c+d == e+f && (a+b != e+f || ok(c, a, e)) ||
		c-d == e-f && (a-b != e-f || ok(c, a, e)) {
		return 1
	}
	return 2
}

func ok(l, m, r int) bool {
	return m < min(l, r) || m > max(l, r)
}

cpp 解法, 执行用时: 0 ms, 内存消耗: 6.2 MB, 提交时间: 2024-01-14 12:43:35

class Solution {
    bool ok(int l, int m, int r) {
        return m < min(l, r) || m > max(l, r);
    }

public:
    int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f) {
        if (a == e && (c != e || ok(b, d, f)) ||
            b == f && (d != f || ok(a, c, e)) ||
            c + d == e + f && (a + b != e + f || ok(c, a, e)) ||
            c - d == e - f && (a - b != e - f || ok(c, a, e))) {
            return 1;
        }
        return 2;
    }
};

java 解法, 执行用时: 0 ms, 内存消耗: 39.7 MB, 提交时间: 2024-01-14 12:43:16

class Solution {
    public int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f) {
        if (a == e && (c != e || ok(b, d, f)) ||
            b == f && (d != f || ok(a, c, e)) ||
            c + d == e + f && (a + b != e + f || ok(c, a, e)) ||
            c - d == e - f && (a - b != e - f || ok(c, a, e))) {
            return 1;
        }
        return 2;
    }

    private boolean ok(int l, int m, int r) {
        return m < Math.min(l, r) || m > Math.max(l, r);
    }
}

python3 解法, 执行用时: 48 ms, 内存消耗: 17.1 MB, 提交时间: 2024-01-14 12:43:00

class Solution:
    def minMovesToCaptureTheQueen(self, a: int, b: int, c: int, d: int, e: int, f: int) -> int:
        def ok(l: int, m: int, r: int) -> bool:
            return not min(l, r) < m < max(l, r)

        if a == e and (c != e or ok(b, d, f)) or \
           b == f and (d != f or ok(a, c, e)) or \
           c + d == e + f and (a + b != e + f or ok(c, a, e)) or \
           c - d == e - f and (a - b != e - f or ok(c, a, e)):
            return 1
        return 2

上一题