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

代碼隨想錄圖論并查集 第七天 | 685.冗余連接II

這篇具有很好參考價值的文章主要介紹了代碼隨想錄圖論并查集 第七天 | 685.冗余連接II。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

代碼隨想錄圖論并查集 第七天 | 685.冗余連接II

一、685.冗余連接II

題目鏈接:https://leetcode.cn/problems/redundant-connection-ii/
思路:684.冗余連接中是連通且無環(huán)的無向圖可直接使用并查集模板,如果想判斷集合中是否有環(huán),且那條邊構(gòu)成環(huán),只需要每次加入并查集之前先判斷一下是否有相同的根,有即構(gòu)成環(huán)。
本題是有向圖,如果不是樹,有兩種情況一種是入度為2,如[1,2]、[1,3]、[2,3]。3的入度為2刪掉一條邊即為樹。另一種是無入度為2的點,本身來說,本題原集合不是樹,如果無入度為2那么就一定構(gòu)成環(huán)了,如[1,2]、[2,3]、[3,1]。
那么,分為兩步,第一步找到入度為2的點,進行刪除嘗試,如果沒有入度為2的點,開始第二步,找到構(gòu)成環(huán)的邊。文章來源地址http://www.zghlxwxcb.cn/news/detail-740783.html

class Solution {
    int[] father = new int[1005];;


    public int[] findRedundantDirectedConnection(int[][] edges) {
        int[] inDegree = new int[1005];
        for (int i = 0; i < edges.length; i++) {
            inDegree[edges[i][1]]++;
        }
        List<Integer> list = new ArrayList<>();
        for (int i = edges.length -1; i >= 0 ; i--) {
            if (inDegree[edges[i][1]] == 2) list.add(i);
        }
        if (!list.isEmpty()) {
            if (f1(edges, list.get(0))) return edges[list.get(0)];
            else return edges[list.get(1)];
        }
        return f2(edges);
    }

    boolean f1(int[][] edges, int x) {
        init();
        for (int i = 0; i < edges.length; i++) {
            if (i == x) continue;
            if (isSame(edges[i][0], edges[i][1])) return false;
            else join(edges[i][0], edges[i][1]);
        }
        return true;
    }

    int[] f2(int[][] edges) {
        init();
        for (int[] edge : edges) {
            if (isSame(edge[0], edge[1])) return edge;
            else join(edge[0], edge[1]);
        }
        return null;
    }

    void init() {
        for (int i = 0; i < father.length; i++) {
            father[i] = i;
        }
    }
    int find(int u) {
        if (father[u] == u) return u;
        return father[u] = find(father[u]);
    }
    void join(int u, int v) {
        u = find(u);
        v = find(v);
        if (u == v)return;
        father[u] = v;
    }
    boolean isSame(int u, int v) {
        u = find(u);
        v = find(v);
        return u == v;
    }
}

到了這里,關(guān)于代碼隨想錄圖論并查集 第七天 | 685.冗余連接II的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 代碼隨想錄圖論 第五天| 841.鑰匙和房間 463. 島嶼的周長

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

    2024年02月06日
    瀏覽(19)
  • 代碼隨想錄圖論 第一天 | 797.所有可能的路徑 200. 島嶼數(shù)量

    代碼隨想錄圖論 第一天 | 797.所有可能的路徑 200. 島嶼數(shù)量 一、797.所有可能的路徑 題目鏈接:https://leetcode.cn/problems/all-paths-from-source-to-target/ 思路:求從0到n-1的所有路徑,終止條件是當前節(jié)點為n-1。本題圖的結(jié)構(gòu)是group[][],group[x]表示x節(jié)點所能到達的所有節(jié)點的集合,深度

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

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

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

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

    2024年02月07日
    瀏覽(20)
  • 代碼隨想錄圖論|130. 被圍繞的區(qū)域 417太平洋大西洋水流問題

    代碼隨想錄圖論|130. 被圍繞的區(qū)域 417太平洋大西洋水流問題

    **題目:**給你一個 m x n 的矩陣 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 圍繞的區(qū)域,并將這些區(qū)域里所有的 ‘O’ 用 ‘X’ 填充。 題目鏈接:130. 被圍繞的區(qū)域 解題思路:在飛地的基礎(chǔ)上做改動,使用一個棧存儲需要改變的節(jié)點 題目 :有一個 m × n 的矩形島

    2024年02月04日
    瀏覽(20)
  • 代碼隨想錄Day41-圖論:力扣第797m、200m、695m、1020m、130m題

    題目鏈接 代碼隨想錄文章講解鏈接 方法一:DFS 用時:11m43s 思路 時間復(fù)雜度: O ( n ? 2 n ) O(n cdot 2^n) O ( n ? 2 n ) ,n是節(jié)點個數(shù),最壞情況每個節(jié)點都可以去往任意一個在它后面的節(jié)點,那么第i個節(jié)點去到最后一個節(jié)點的路徑數(shù)就有 2 n ? i ? 2 2^{n-i-2} 2 n ? i ? 2 ,就是

    2024年02月06日
    瀏覽(24)
  • 代碼隨想錄圖論 第三天 | 130. 被圍繞的區(qū)域 417. 太平洋大西洋水流問題

    代碼隨想錄圖論 第三天 | 130. 被圍繞的區(qū)域 417. 太平洋大西洋水流問題 一、130. 被圍繞的區(qū)域 題目鏈接:https://leetcode.cn/problems/surrounded-regions/ 思路:題目要求沾邊的不動,只改沒沾邊的,那么可以先dfs遍歷4條邊,把沾邊的O都改成A。然后直接兩層for循環(huán)遍歷整個數(shù)組,把O該

    2024年02月07日
    瀏覽(18)
  • 代碼隨想錄| 圖論04 查并集 ●查并集理論知識 ●1971.尋找圖中是否存在路徑 ●684.冗余連接 ●685.冗余連接II

    代碼隨想錄| 圖論04 查并集 ●查并集理論知識 ●1971.尋找圖中是否存在路徑 ●684.冗余連接 ●685.冗余連接II

    #查并集理論知識 ? 并查集用處:解決連通性問題 將兩個元素添加到一個集合中。 判斷兩個元素在不在同一個集合 思路:將三個元素A,B,C (分別是數(shù)字)放在同一個集合,其實就是將三個元素連通在一起,如何連通:只需要用一個一維數(shù)組來表示,即:father[A] = B,fathe

    2024年02月16日
    瀏覽(21)
  • 代碼隨想錄| 圖論02●695島嶼最大面積 ●1020飛地的數(shù)量 ●130被圍繞的區(qū)域 ●417太平洋大西洋水流問題

    代碼隨想錄| 圖論02●695島嶼最大面積 ●1020飛地的數(shù)量 ●130被圍繞的區(qū)域 ●417太平洋大西洋水流問題

    #695島嶼最大面積 模板題,很快.以下兩種dfs,區(qū)別是看第一個點放不放到dfs函數(shù)中處理,那么初始化的area一個是1一個是0 ?bfs:對應(yīng)也有兩種 #1020飛地的數(shù)量 下面是自己寫的dfs,過了但是很多可以改進。bfs也差不多這里就不寫了? 可改進的點: 1 其實遍歷四周可以四個循環(huán)合

    2024年02月16日
    瀏覽(24)
  • 代碼隨想錄刷題

    代碼隨想錄刷題

    704. 二分查找 27. 移除元素

    2024年01月25日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包