1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import java.util.ArrayList; import java.util.Arrays; import java.util.List;
class Solution { public List<List<Integer>> queensAttacktheKing(int[][] queens, int[] king) { int[][] directions = { { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 }, { 1, 1 }, { -1, -1 }, { -1, 1 }, { 1, -1 } }; List<List<Integer>> res = new ArrayList<List<Integer>>(); dirs: for (int i = 0; i < directions.length; i++) { int[] tmp = new int[2]; tmp[0] = king[0]; tmp[1] = king[1]; int[] dir = directions[i]; while (!isCross(tmp)) { tmp[0] += dir[0]; tmp[1] += dir[1]; for (int j = 0; j < queens.length; j++) { if (Arrays.equals(tmp, queens[j])) { List<Integer> posList = new ArrayList<Integer>(); posList.add(queens[j][0]); posList.add(queens[j][1]); res.add(posList); continue dirs; } } } } return res; }
boolean isCross(int[] pos) { return !(pos[0] > -1 && pos[0] < 8 && pos[1] > -1 && pos[1] < 8); } }
|