成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

leetcode417. Pacific Atlantic Water Flow

Lavender / 879人閱讀

摘要:題目要求假設(shè)左上角的所有周圍面積為太平洋,右下角的所有面積為大西洋。假定水只能從高出流向低處,要求找出所有既可以流向太平洋也可以流向大西洋的水域。但是反過來來看,任意一個可以到達(dá)大西洋的水流必然會抵達(dá)數(shù)組左邊和上邊的任意一點(diǎn)。

題目要求
Given an m x n matrix of non-negative integers representing the height of each unit cell in a continent, the "Pacific ocean" touches the left and top edges of the matrix and the "Atlantic ocean" touches the right and bottom edges.

Water can only flow in four directions (up, down, left, or right) from a cell to another one with height equal or lower.

Find the list of grid coordinates where water can flow to both the Pacific and Atlantic ocean.

Note:
The order of returned grid coordinates does not matter.
Both m and n are less than 150.
Example:

Given the following 5x5 matrix:

  Pacific ~   ~   ~   ~   ~ 
       ~  1   2   2   3  (5) *
       ~  3   2   3  (4) (4) *
       ~  2   4  (5)  3   1  *
       ~ (6) (7)  1   4   5  *
       ~ (5)  1   1   2   4  *
          *   *   *   *   * Atlantic

Return:

[[0, 4], [1, 3], [1, 4], [2, 2], [3, 0], [3, 1], [4, 0]] (positions with parentheses in above matrix).

假設(shè)左上角的所有周圍面積為太平洋,右下角的所有面積為大西洋。現(xiàn)在使用數(shù)組來表示一大片水域,其中數(shù)組的每一個位置上的元素代表某一個小水域的高度。假定水只能從高出流向低處,要求找出所有既可以流向太平洋也可以流向大西洋的水域。

思路和代碼

首先需要理解題意,題目中強(qiáng)調(diào)了水流可以涌向上下左右四個方向,即水流并非只能一直往左流或是一直往上流才能達(dá)到太平洋,它可以繞著圈子轉(zhuǎn),如下面的例子所示:

{1,2,3},
{8,9,4},
{7,6,5}

高度為6的水域的水可以由6->5->4并最終匯入太平洋

這道題目直觀上來看是需要以數(shù)組中的任意一個位置為起點(diǎn),分別尋找一條數(shù)字由大到小并最終到達(dá)左上側(cè)或是右下側(cè)的路徑。但是反過來來看,任意一個可以到達(dá)大西洋的水流必然會抵達(dá)數(shù)組左邊和上邊的任意一點(diǎn)。因此,我們可以以數(shù)組的邊緣作為起點(diǎn),尋找所有數(shù)字由小到大的路徑,該路徑上的所有點(diǎn)必然可以到達(dá)該邊所在的洋流。

這里可以采用深度優(yōu)先搜索或是廣度優(yōu)先搜索的方式遍歷所有的可達(dá)水域。停止延伸的條件就是遇到已經(jīng)訪問過的水域或者該水域的高度低于前置水域高度。

代碼如下:

    public List pacificAtlantic(int[][] matrix) {
        List result = new ArrayList<>();
        if(matrix==null || matrix.length==0 || matrix[0].length==0) return result;
        int rows = matrix.length;
        int columns = matrix[0].length;
        //能夠流入太平洋
        boolean[][] canReachPacific = new boolean[matrix.length][matrix[0].length];
        //能夠流入大西洋
        boolean[][] canReachAtlantic = new boolean[matrix.length][matrix[0].length];
        for(int i = 0 ; i           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74732.html

相關(guān)文章

  • 417. Pacific Atlantic Water Flow

    摘要:題目鏈接思路是分別找到和能夠流到的地方,然后求兩個地方的交集。找和能流到的地方,就是這個的遍歷過程,可以用或者。復(fù)雜度沒什么差,寫起來簡單點(diǎn)。 417. Pacific Atlantic Water Flow 題目鏈接:https://leetcode.com/problems... 思路是分別找到pacific和atlantic能夠流到的地方,然后求兩個地方的交集。找pacific和...

    huayeluoliuhen 評論0 收藏0
  • 容器最大盛水量

    摘要:容器最大盛水量給定個非負(fù)整數(shù),,,,其中每個表示坐標(biāo),處的點(diǎn)。找到兩條線,它們與軸一起形成一個容器,使得容器含有最多的水。 容器最大盛水量 Container With Most Water 給定n個非負(fù)整數(shù)a1,a2,...,an,其中每個表示坐標(biāo)(i,ai)處的點(diǎn)。 繪制n條垂直線,使得線i的兩個端點(diǎn)在(i,ai)和(i,0)處。 找到兩條線,它們與x軸一起形成一個容器,使得容器...

    luckyw 評論0 收藏0
  • Leetcode[42] Trapping Rain Water

    摘要:復(fù)雜度思路因?yàn)樾钏嗌偃Q于比較短的那塊板的長度。代碼復(fù)雜度思路考慮說明時候需要計(jì)算蓄水量當(dāng)?shù)臅r候,需要計(jì)算能儲存的水的多少。每次還需要取出一個作為中間值。如果則一直向里面壓進(jìn)去值,不需要直接計(jì)算。 Leetcode[42] Trapping Rain Water Given n non-negative integers representing an elevation map ...

    jonh_felix 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<