美文网首页计算机
Interview Question - find minimu

Interview Question - find minimu

作者: Richardo92 | 来源:发表于2016-09-28 03:39 被阅读4次

    有墙找路的变形 1 是路 0 是墙, 让你从左边col的任意点走到右边col的任意点的最小step。走不到就返回-1注意起始点是任意左col的点 而不是左上 , 也不是走到右下。 要考虑到中间如果有一个col全部都是0(墙)的case

    http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=198749&highlight=snapchat

    My code:

    private int row = 0;
        private int col = 0;
        private int[][] dir = new int[][]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
        public int shortedPath(char[][] board) {
            if (board == null || board.length == 0 || board[0].length == 0) {
                return 0;
            }
            this.row = board.length;
            this.col = board[0].length;
            Queue<Position> q = new LinkedList<Position>();
            boolean[][] mark = new boolean[row][col];
            for (int i = 0; i < row; i++) {
                if (board[i][0] == '1') {
                    q.offer(new Position(i, 0, 0));
                    mark[i][0] = true;
                }
            }
            
            while (!q.isEmpty()) {
                Position p = q.poll();
                if (p.y == col - 1) {
                    return p.step;
                }
                for (int k = 0; k < 4; k++) {
                    int next_x = p.x + dir[k][0];
                    int next_y = p.y + dir[k][1];
                    if (check(next_x, next_y) && !mark[next_x][next_y] && board[next_x][next_y] == '1') {
                        q.offer(new Position(p.x, p.y, p.x + 1));
                    }
                }
            }
            
            return -1;
        }
        
        private boolean check(int i, int j) {
            if (i < 0 || i >= row || j < 0 || j >= col) {
                return false;
            }
            else {
                return true;
            }
        }
    
    
    class Position {
        int x;
        int y;
        int step;
        Position(int x, int y, int step) {
            this.x = x;
            this.y = y;
            this.step = step;
        }
    }
    

    还是 BFS, multi- end BFS

    Anyway, Good luck, Richardo! -- 09/27/2016

    相关文章

      网友评论

        本文标题:Interview Question - find minimu

        本文链接:https://www.haomeiwen.com/subject/bhshyttx.html