中国建设银行网站密码是什么,网页版传奇怎么开,网站做支付要多少钱,手机兼职赚钱软件Problem: 剑指 Offer 13. 机器人的运动范围 文章目录 思路解题方法复杂度Code 思路 首先定义好地图#xff0c;上下左右四个方向也就是{{1,0},{0,1},{-1,0},{0,-1}}#xff0c;然后我们另外定义一个方法来判断题目要求的下标位数和是否大于k#xff0c; boolean check(int x… Problem: 剑指 Offer 13. 机器人的运动范围 文章目录 思路解题方法复杂度Code 思路 首先定义好地图上下左右四个方向也就是{{1,0},{0,1},{-1,0},{0,-1}}然后我们另外定义一个方法来判断题目要求的下标位数和是否大于k boolean check(int x,int y,int k){int s 0;while(x!0){sx%10;x x/10;}while(y!0){sy%10;y y/10;}return sk;}然后定义dfs遍历要额外传入一个vst[][]辨别是否已经走过防止无限循环造成栈溢出外面定义res一开始是1因为最开始的{00}格子一定会占一个结果然后每遍历一遍1即可
解题方法 描述你的解题方法 复杂度
时间复杂度: 添加时间复杂度, 示例 O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例 O ( n ) O(n) O(n) Code class Solution {public int movingCount(int m, int n, int k) {this.m m;this.n n;return dfs(0,0,k,new boolean[m][n]);}int[][] dirs {{1,0},{0,1},{-1,0},{0,-1}};int m,n;int res 1;int dfs(int x,int y,int k,boolean[][] vst){vst[x][y] true;for(int[] dir :dirs){int nx x dir[0];int ny y dir[1];if(nx0 || ny0 || nxm || ny n || check(nx,ny,k) || vst[nx][ny]){continue;}res dfs(nx,ny,k,vst)1;}return res;}boolean check(int x,int y,int k){int s 0;while(x!0){sx%10;x x/10;}while(y!0){sy%10;y y/10;}return sk;}
}