题解 | #机器人路径#
机器人的运动范围
http://www.nowcoder.com/practice/6e5207314b5241fb83f2329e89fdecc8
机器人路径路径问题
手撸这个提的思想,即用二维数组保存是否被访问过,因为被访问了不能再次去。
然后利用一个单行增加或者单列增加的处理。即减少了双重循环带来的时间复杂问题。
当然了,这里避免不了的空间复杂问题,若需要避免空间复杂问题,避免使用二位数组辅助判断,利用其他方法解决。
public class Solution { public int movingCount(int threshold, int rows, int cols) { int[][] arrays=new int[rows][cols]; return isnext(arrays,0,0,threshold); } public int isnext(int[][] arry, int i,int j,int thresh){ if(i>=arry.length || j>=arry[0].length){ return 0; }else{ if(arry[i][j]==1){ return 0; } int sval=0; int r=i; int c=j; arry[i][j]=1; int inext=0; int jnext=0; while((i/10) >=0 && i>0){ sval=(i%10) +sval; i=i/10; } while((j/10) >=0 && j>0){ sval=(j%10)+sval; j=j/10; } if(sval >thresh ){ return 0; }else{ // return 1+isnext(arry,r+1,c,thresh) +isnext(arry,r,c+1,thresh); } } } }