Here is my java solution which works fine but compiler says OOM. Can someone help me identify the issue with this code ?
public int knight(int A, int B, int C, int D, int E, int F) {
if (A > 0 && B > 0 && C > 0 && D > 0 && C <= A && D <= B && E > 0 && F > 0 && E <= A && F <= B) {
movesQueue.add(new Move(C, D, 0));
boolean[][] visited = new boolean[A + 1][B + 1];
while (!movesQueue.isEmpty()) {
Move move = movesQueue.remove();
visited[move.x][move.y] = true;
int moveCount = move.moveCount + 1;
if (move.x == E && move.y == F)
return moveCount - 1;
if (move.x + 2 <= A && move.y + 1 <= B && visited[move.x + 2][move.y + 1] != true) {
movesQueue.add(new Move(move.x + 2, move.y + 1, moveCount));
}
if (move.x + 1 <= A && move.y + 2 <= B && visited[move.x + 1][move.y + 2] != true) {
movesQueue.add(new Move(move.x + 1, move.y + 2, moveCount));
}
if (move.x - 1 > 0 && move.y + 2 <= B && visited[move.x - 1][move.y + 2] != true) {
movesQueue.add(new Move(move.x - 1, move.y + 2, moveCount));
}
if (move.x - 2 > 0 && move.y + 1 <= B && visited[move.x - 2][move.y + 1] != true) {
movesQueue.add(new Move(move.x - 2, move.y + 1, moveCount));
}
if (move.x - 2 > 0 && move.y - 1 > 0 && visited[move.x - 2][move.y - 1] != true) {
movesQueue.add(new Move(move.x - 2, move.y - 1, moveCount));
}
if (move.x - 1 > 0 && move.y - 2 > 0 && visited[move.x - 1][move.y - 2] != true) {
movesQueue.add(new Move(move.x - 1, move.y - 2, moveCount));
}
if (move.x + 1 <= A && move.y - 2 > 0 && visited[move.x + 1][move.y - 2] != true) {
movesQueue.add(new Move(move.x + 1, move.y - 2, moveCount));
}
if (move.x + 2 <= A && move.y - 1 > 0 && visited[move.x + 2][move.y - 1] != true) {
movesQueue.add(new Move(move.x + 2, move.y - 1, moveCount));
}
}
}
return -1;
}