题解 | #机器人的运动范围#

机器人的运动范围

http://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8

public class Solution {
    public int movingCount(int threshold, int rows, int cols) {
        int rst = 0;
        boolean[][] visits = new boolean[rows][cols];   
        LinkedList<Point> queue = new LinkedList<>();   //BFS
        queue.add(new Point(0,0));
        visits[0][0] = true;
        while(!queue.isEmpty()) {
            Point point = queue.poll();
            rst++;
            int[][] arr =  new int[][]{{1,0},{0,1}}; //向下向右扫过去
            for (int[] a : arr) {
                Point v = new Point(point.rows+a[0], point.cols+a[1]);
                boolean flag = isCanVisit(v, threshold, rows, cols);
                if(flag && !visits[v.rows][v.cols]) {
                    visits[v.rows][v.cols] = true;
                    queue.add(v);
                }
            }
        }
        return rst;
    }
    
    private boolean isCanVisit(Point point, int threshold, int rows, int cols) {
        if(point.rows < 0 || point.rows >= rows 
           || point.cols < 0 || point.cols >= cols || threshold <= 0) {
            return false;
        }
        int tmp = point.rows / 10 + point.rows % 10 + point.cols / 10 + point.cols % 10;
        return tmp <= threshold;
    }
}

class Point {
    int rows;
    int cols;
    public Point(int rows, int cols) {
        this.rows = rows;
        this.cols = cols;
    }
}
全部评论

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务