码迷,mamicode.com
首页 > 其他好文 > 详细

Print All Paths in a 2D Board

时间:2018-08-17 01:19:53      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:else   amp   nbsp   follow   path   pen   style   char   col   

Print All Paths in a 2D Board

public class Solution {
    private int m;
    private int n;
    public void printAllPath(char[][] grid) {
        int count=0;
        m=grid.length;
        if(m==0) return 0;
        n=grid[0].length;
        dfs(grid,0,0,"");
    }
    public void dfs(char[][] grid,int i,int j,String s){
        if(i>m||j>n) return;
        if(i==m&&j==n) print(s+grid[i][j]);
        dfs(grid,i,j+1,s+grid[i][j]+"->");
        dfs(grid,i+1,j,s+grid[i][j]+"->");
    }
}


follow up是如果board很大,怎么优化。答用stringbuilder

public List<String> printAllPath(char[][] board){
    List<String> res = new ArrayList<>();
    StringBuilder sb = new StringBuilder();
    dfs(board,res,sb,0,0);
    return res;
}
public void dfs(char[][] b, List<String> res, StringBuilder sb, int x, int y){
    int len = sb.length();
    sb.append(b[y][x]);
    
    if( x == b[0].length - 1 && y == b.length - 1){
        String s = sb.toString();
        res.add(s);
    } else{
        if( x + 1 < b[0].length) dfs(b,res,sb,x+1,y);
        if( y + 1 < b.length ) dfs(b,res,sb,x,y+1); 
    }
    sb.setLength(len);  
}

 

Print All Paths in a 2D Board

标签:else   amp   nbsp   follow   path   pen   style   char   col   

原文地址:https://www.cnblogs.com/tobeabetterpig/p/9490926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!