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

tobegold574 Lv5

捕获黑皇后需要的最少移动次数(medium)

做题过程

总之就是一堆分类讨论。没做完,太烦了。

算法概述

原题

本题要求为给出车、象、黑皇后的位置,黑皇后不动,看车和象需要多少步到黑皇后的位置。就是分类讨论。

  • 时间复杂度为O(1)
  • 空间复杂度为O(1)

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f) {
// 车与皇后处在同一行,且中间没有象
if (a == e && (c != a || d <= Math.min(b, f) || d >= Math.max(b, f))) {
return 1;
}
// 车与皇后处在同一列,且中间没有象
if (b == f && (d != b || c <= Math.min(a, e) || c >= Math.max(a, e))) {
return 1;
}
// 象、皇后处在同一条对角线,且中间没有车
if (Math.abs(c - e) == Math.abs(d - f) && ((c - e) * (b - f) != (a - e) * (d - f)
|| a < Math.min(c, e) || a > Math.max(c, e))) {
return 1;
}
return 2;
}
}

总结

就是要用Math.max()Max.min()简化比较,还有如果分类要求较多,应当 适当增加if数量 ,而不是全部挤在一块,像上述解法,就是把车的同行同列分到了两个if里,这样就好写很多,核心的还是 分离 的思想。

  • Title: 捕获黑皇后需要的最少移动次数
  • Author: tobegold574
  • Created at : 2024-12-05 11:21:20
  • Updated at : 2024-12-05 11:26:53
  • Link: https://tobegold574.me/2024/12/05/捕获黑皇后需要的最少移动次数/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
捕获黑皇后需要的最少移动次数