From 9a2a163f66bd3e8eb49206180b056114594f96a3 Mon Sep 17 00:00:00 2001 From: kkunkka Date: Tue, 15 Jul 2025 21:14:30 +0800 Subject: [PATCH] kk --- .../com/dota/gridGraph/_417/Solution.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/java/com/dota/gridGraph/_417/Solution.java diff --git a/src/main/java/com/dota/gridGraph/_417/Solution.java b/src/main/java/com/dota/gridGraph/_417/Solution.java new file mode 100644 index 0000000..41f664d --- /dev/null +++ b/src/main/java/com/dota/gridGraph/_417/Solution.java @@ -0,0 +1,53 @@ +package com.dota.gridGraph._417; + +import java.util.ArrayList; +import java.util.List; + +class Solution { + boolean a = false, b = false; + + public List> pacificAtlantic(int[][] heights) { + var book = new boolean[heights.length][heights[0].length]; + for (int i = 0; i < book.length; i++) { + book[i] = new boolean[heights[0].length]; + } + var res = new ArrayList>(); + for (int i = 0; i < heights.length; i++) { + for (int j = 0; j < heights[i].length; j++) { + a = false; + b = false; + dfs(i, j, heights, book, heights[i][j]); + if (a&&b) { + res.add(List.of(i,j)); + } + } + } + return res; + } + + void dfs(int i, int j, int[][] heights, boolean[][] book, int last) { + if (a && b) return; + if (i < 0 || j < 0) { + a = true; + return; + } + if (i >= heights.length || j >= heights[0].length) { + b = true; + return; + } + + if (book[i][j]) { + return; + } + if (heights[i][j] > last) { + return; + } + + book[i][j] = true; + dfs(i + 1, j, heights, book, heights[i][j]); + dfs(i - 1, j, heights, book, heights[i][j]); + dfs(i, j + 1, heights, book, heights[i][j]); + dfs(i, j - 1, heights, book, heights[i][j]); + book[i][j] = false; + } +} \ No newline at end of file