Leetcode——机器人的运动范围

Posted Yawn,

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——机器人的运动范围相关的知识,希望对你有一定的参考价值。

1. 题目

2. 题解

  • 通过sum函数计算位数和,然后就是普通的dfs遍历
class Solution {
    int ans = 0;
    int[][] direction = {{1,0}, {-1,0}, {0,1}, {0,-1}};

    public int movingCount(int m, int n, int k) {
        boolean[][] vis = new boolean[m][n];
        dfs(m, n, vis, 0, 0, k);
        return ans;
    }

    //求数位和
    public int sums(int x){
        int s = 0;
        while(x != 0) {
            s += x % 10;
            x = x / 10;
        }
        return s;
    }

    public void dfs(int m, int n, boolean[][] vis, int x, int y, int k){
        if(sums(x) + sums(y) > k)
            return;

        //标记已经走过该位置,ans加一
        vis[x][y] = true;
        ans++;

        //四个方向遍历,找符合要求的坐标
        for(int[] dir : direction){
            int newX = x + dir[0];
            int newY = y + dir[1];
            if(newX >= 0 && newX < m && newY >= 0 && newY < n && !vis[newX][newY])
                dfs(m, n, vis, newX, newY, k);
        }
    }
}

以上是关于Leetcode——机器人的运动范围的主要内容,如果未能解决你的问题,请参考以下文章

leetcode:机器人的运动范围

leetcode 剑指 Offer 13. 机器人的运动范围

leetcode-面试题13-机器人的运动范围

leetcode中等剑指13机器人的运动范围

leetcode-机器人的运动范围-56

剑指OFFER----试题13. 机器人的运动范围