国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

代碼隨想錄圖論 第一天 | 797.所有可能的路徑 200. 島嶼數(shù)量

這篇具有很好參考價(jià)值的文章主要介紹了代碼隨想錄圖論 第一天 | 797.所有可能的路徑 200. 島嶼數(shù)量。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

代碼隨想錄圖論 第一天 | 797.所有可能的路徑 200. 島嶼數(shù)量

一、797.所有可能的路徑

題目鏈接:https://leetcode.cn/problems/all-paths-from-source-to-target/
思路:求從0到n-1的所有路徑,終止條件是當(dāng)前節(jié)點(diǎn)為n-1。本題圖的結(jié)構(gòu)是group[][],group[x]表示x節(jié)點(diǎn)所能到達(dá)的所有節(jié)點(diǎn)的集合,深度優(yōu)先做本題會(huì)一路向下搜索,到頭后回溯。

class Solution {
    List<List<Integer>> arrayLists = new ArrayList<>();
    List<Integer> list = new ArrayList<>();
    public List<List<Integer>> allPathsSourceTarget(int[][] graph) {
        list.add(0);
        dfs(graph, 0);
    
        return arrayLists;
    }

    void dfs(int[][] graph, int cur) {
        if (cur == graph.length-1) {
            arrayLists.add(new ArrayList<>(list));
            return;
        }
        for (int i = 0; i < graph[cur].length; i++) {
            list.add(graph[cur][i]);
            dfs(graph, graph[cur][i]);
            list.remove(list.size()-1);
        }
    }
}

200. 島嶼數(shù)量

題目鏈接:https://leetcode.cn/problems/number-of-islands/

深搜:當(dāng)前節(jié)點(diǎn)為1時(shí)島嶼數(shù)加1,然后把當(dāng)前節(jié)點(diǎn)設(shè)置為0,并從當(dāng)前節(jié)點(diǎn)開始進(jìn)行上下左右四個(gè)方向的深度搜索,只要沒越界,不是0,那就是相連的就都設(shè)置為0,直到遞歸結(jié)束,然后外層遍歷開始尋找下一個(gè)為1的島嶼。

class Solution {
   public int numIslands(char[][] grid) {
        int num = 0;
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                if (grid[i][j] == '1') {
                    num++;
                    dfs(grid, i, j);
                }
            }
        }
        return num;
    }

    void dfs(char[][] grid, int x, int y) {
        if (x < 0 || x >= grid.length || y < 0 || y >= grid[0].length || grid[x][y] == '0'){
            return;
        }
        grid[x][y] = '0';
        // 按照上下左右四個(gè)方向深度優(yōu)先遍歷
        dfs(grid, x-1, y);
        dfs(grid, x+1, y);
        dfs(grid, x, y-1);
        dfs(grid, x, y+1);
    }
}

廣搜:廣度優(yōu)先需要額外有一個(gè)標(biāo)記數(shù)組和隊(duì)列,如果當(dāng)前節(jié)點(diǎn)未遍歷過,且為1,進(jìn)行廣度優(yōu)先搜索,入隊(duì),出隊(duì),每個(gè)出隊(duì)節(jié)點(diǎn)只搜索4個(gè)位置,即當(dāng)前節(jié)點(diǎn)是上下左右,只要沒超范圍而且是1就可以入隊(duì),入隊(duì)后要進(jìn)行標(biāo)記,直到該次廣搜結(jié)束,島嶼數(shù)量加1.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-714444.html

class Solution {
   // 上下左右
    int[][] move = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
    boolean[][] visited;
    public int numIslands(char[][] grid) {
        int num = 0;
        visited = new boolean[grid.length][grid[0].length];
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[0].length; j++) {
                if (!visited[i][j] && grid[i][j] == '1') {
                    bfs(grid, i, j);
                    num++;
                }
            }
        }
        return num;
    }

    void bfs(char[][] grid, int x, int y) {
        Deque<int[]> queue = new LinkedList<>();
        queue.offer(new int[]{x, y});
        visited[x][y] = true;
        while (!queue.isEmpty()) {
            int[] cur = queue.poll();
            int m = cur[0], n = cur[1];
            for (int i = 0; i < move.length; i++) {
                int nextX = m + move[i][0];
                int nextY = n + move[i][1];
                if (nextX < 0 || nextX >= grid.length || nextY < 0 || nextY >= grid[0].length) continue;
                if (!visited[nextX][nextY] && grid[nextX][nextY] == '1'){
                    queue.offer(new int[]{nextX, nextY});
                    visited[nextX][nextY] = true;
                }
            }
        }
    }
}

到了這里,關(guān)于代碼隨想錄圖論 第一天 | 797.所有可能的路徑 200. 島嶼數(shù)量的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 代碼隨想錄第十一天 | ??????LeetCode 20. 有效的括號(hào)、??????LeetCode 1047. 刪除字符串中的所有相鄰重復(fù)項(xiàng)、??????LeetCode 150. 逆波蘭表達(dá)式求

    代碼隨想錄第十一天 | ??????LeetCode 20. 有效的括號(hào)、??????LeetCode 1047. 刪除字符串中的所有相鄰重復(fù)項(xiàng)、??????LeetCode 150. 逆波蘭表達(dá)式求

    目錄 ??????LeetCode 20.?有效的括號(hào) 文章講解:代碼隨想錄(programmercarl.com) 視頻講解:棧的拿手好戲!| LeetCode:20. 有效的括號(hào)_嗶哩嗶哩_bilibili 思路 ??????LeetCode 1047.?刪除字符串中的所有相鄰重復(fù)項(xiàng) 文章講解:代碼隨想錄(programmercarl.com) 視頻講解:棧的好戲還

    2024年02月22日
    瀏覽(36)
  • 代碼隨想錄第二十一天

    題目鏈接 : 二叉搜索樹的最小絕對(duì)差 自己的思路 :和驗(yàn)證二叉搜索樹一樣的思路!可以求每個(gè)相鄰節(jié)點(diǎn)的差值的絕對(duì)值,然后和之前的差值的絕對(duì)值進(jìn)行比較,取最小的為新的res;遞歸三部曲:1、傳入?yún)?shù):當(dāng)前節(jié)點(diǎn);2、終止條件:如果當(dāng)前節(jié)點(diǎn)為空,直接返回;3、單層遞

    2024年02月16日
    瀏覽(25)
  • 代碼隨想錄 圖論

    代碼隨想錄 圖論

    目錄 797.所有可能得路徑? 200.島嶼數(shù)量 695.島嶼的最大面積 1020.飛地的數(shù)量? 130.被圍繞的區(qū)域? 417.太平洋大西洋水流問題? 827.最大人工島 127.單詞接龍? 841.鑰匙和房間 463.島嶼的周長(zhǎng)? 797. 所有可能的路徑 中等 給你一個(gè)有? n ?個(gè)節(jié)點(diǎn)的? 有向無(wú)環(huán)圖(DAG) ,請(qǐng)你找出所有從

    2024年04月10日
    瀏覽(23)
  • 代碼隨想錄(番外)圖論1

    代碼隨想錄(番外)圖論1

    1. 深度優(yōu)先搜索理論基礎(chǔ) 2. 所有可能的路徑 3. 廣度優(yōu)先搜索理論基礎(chǔ).md https://programmercarl.com/%E5%9B%BE%E8%AE%BA%E6%B7%B1%E6%90%9C%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 1. 深度優(yōu)先搜索理論基礎(chǔ) 總結(jié) 同理回溯算法,換湯不換藥 二叉樹遞歸講解 (opens new window)中,給出了遞歸三部曲。 回溯算

    2024年04月28日
    瀏覽(22)
  • 代碼隨想錄(番外)圖論4

    417. 太平洋大西洋水流問題 那么我們可以 反過來(lái)想,從太平洋邊上的節(jié)點(diǎn) 逆流而上,將遍歷過的節(jié)點(diǎn)都標(biāo)記上。 從大西洋的邊上節(jié)點(diǎn) 逆流而長(zhǎng),將遍歷過的節(jié)點(diǎn)也標(biāo)記上。 然后兩方都標(biāo)記過的節(jié)點(diǎn)就是既可以流太平洋也可以流大西洋的節(jié)點(diǎn)。 也就是說通過從兩邊的大洋開

    2024年04月29日
    瀏覽(15)
  • 【一天三道算法題】代碼隨想錄——Day15(困難題只有一道)

    一. 滑動(dòng)窗口最大值 題目鏈接:力扣 思路: ????????這道題我認(rèn)為最難的是編程語(yǔ)言本身并沒有一個(gè)可以讓你完全直接開始使用的一個(gè)數(shù)據(jù)結(jié)構(gòu),也就是說要自己造輪子。并且為了盡可能的減少維護(hù)元素的個(gè)數(shù)我們要學(xué)會(huì)去在能實(shí)現(xiàn)功能的前提下,維護(hù)盡可能少的數(shù)組元

    2024年02月15日
    瀏覽(93)
  • 代碼隨想錄圖論 第五天| 841.鑰匙和房間 463. 島嶼的周長(zhǎng)

    代碼隨想錄圖論 第五天| 841.鑰匙和房間 一、 841.鑰匙和房間 題目鏈接:https://leetcode.cn/problems/keys-and-rooms/ 思路:鑰匙就是索引,遍歷過就標(biāo)記,每拿到一個(gè)房間的鑰匙,直接for循環(huán)遞歸遍歷,深度優(yōu)先直接拿下。 二、463. 島嶼的周長(zhǎng) 題目鏈接:https://leetcode.cn/problems/island-

    2024年02月06日
    瀏覽(18)
  • 代碼隨想錄圖論并查集 第七天 | 685.冗余連接II

    代碼隨想錄圖論并查集 第七天 | 685.冗余連接II 一、685.冗余連接II 題目鏈接:https://leetcode.cn/problems/redundant-connection-ii/ 思路:684.冗余連接中是連通且無(wú)環(huán)的無(wú)向圖可直接使用并查集模板,如果想判斷集合中是否有環(huán),且那條邊構(gòu)成環(huán),只需要每次加入并查集之前先判斷一下是

    2024年02月06日
    瀏覽(24)
  • 代碼隨想錄Day42-圖論:力扣第417m、841m、463e題

    題目鏈接 代碼隨想錄文章講解鏈接 方法一: 用時(shí):1h0m58s 思路 直接找哪些點(diǎn)既可以到達(dá)太平洋又可以到達(dá)大西洋比較麻煩,換個(gè)角度,找到太平洋可以逆流而上到達(dá)的點(diǎn),再找到大西洋可以逆流而上到達(dá)的點(diǎn),兩者的交集就是所需要的答案。 用兩個(gè)二維數(shù)組分別記錄太平洋

    2024年02月05日
    瀏覽(21)
  • 代碼隨想錄圖論 第二天 | 695. 島嶼的最大面積 1020. 飛地的數(shù)量

    代碼隨想錄圖論 第二天 | 695. 島嶼的最大面積 1020. 飛地的數(shù)量 一、695. 島嶼的最大面積 題目鏈接:https://leetcode.cn/problems/max-area-of-island/ 思路:典型的遍歷模板題,我采用深度優(yōu)先,每塊島嶼遞歸遍歷的時(shí)候計(jì)數(shù),遞歸完比較大小記錄最大值。 二、1020. 飛地的數(shù)量 題目鏈接

    2024年02月07日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包