Skip to content

Files

Latest commit

 

History

History
36 lines (25 loc) · 1.02 KB

Minimum Knight Moves.md

File metadata and controls

36 lines (25 loc) · 1.02 KB

Screen Shot 2022-01-14 at 18 25 25

IMG_301A5729E168-1

var minKnightMoves = function(x, y) {    
    let dirs = [[1, 2], [2, 1], [2, -1], [1, -2], [-1, -2], [-2, -1], [-2, 1], [-1, 2]]; 
    
    let queue = [[0, 0]];
    let level = 0, visited = new Set();
    while(queue.length != 0) {
        let next = [];
        while(queue.length != 0) {
            let cur = queue.pop();
            if (cur[0] == x && cur[1] == y) return level;
            for (let dir of dirs) {
                let nextX = cur[0]+dir[0], nextY = cur[1]+dir[1];
                if (!visited.has(nextX+","+nextY)) {
                    next.push([nextX, nextY]);
                    visited.add(nextX+","+nextY);
                }
            }
        };
        queue = next;
        level++;
    }    
};