floodfill算法系列一>太平洋大西洋水流问题
- 软件开发
- 2025-09-10 11:48:01

目录 题目方法解析:代码设计:代码呈现: 题目方法解析: 代码设计: 代码呈现: class Solution { int m,n; int[] dx = {0,0,-1,1}; int[] dy = {-1,1,0,0}; public List<List<Integer>> pacificAtlantic(int[][] heights) { m = heights.length; n = heights[0].length; boolean[][] pac = new boolean[m][n]; boolean[][] atl = new boolean[m][n]; //判断大西洋的水能否流到某一位置 for(int i = 0; i < n; i++) dfs(heights,0,i,pac); for(int j = 0; j < m; j++) dfs(heights,j,0,pac); //判断太平洋的水能否流到某一位置 for(int i = 0; i < m; i++) dfs(heights,i,n-1,atl); for(int j = 0; j < n; j++) dfs(heights,m-1,j,atl); List<List<Integer>> ret = new ArrayList<>(); for(int i = 0; i < m; i++) for(int j = 0; j < n; j++){ if(pac[i][j] && atl[i][j]){ List<Integer> tmp = new ArrayList<>(); tmp.add(i); tmp.add(j); ret.add(tmp); } } return ret; } //封装出来一套标记遍历 private void dfs(int[][] heights, int i, int j, boolean[][] vis){ vis[i][j] = true; for(int k = 0; k < 4; k++){ int x = i + dx[k]; int y = j + dy[k]; if(x >= 0 && x < m && y >= 0 && y < n && !vis[x][y] && heights[x][y] >= heights[i][j]){ dfs(heights,x,y,vis); } } } }
floodfill算法系列一>太平洋大西洋水流问题由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“floodfill算法系列一>太平洋大西洋水流问题”