博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 684. Redundant Connection
阅读量:6622 次
发布时间:2019-06-25

本文共 1893 字,大约阅读时间需要 6 分钟。

Problem

In this problem, a tree is an undirected graph that is connected and has no cycles.

The given input is a graph that started as a tree with N nodes (with distinct values 1, 2, ..., N), with one additional edge added. The added edge has two different vertices chosen from 1 to N, and was not an edge that already existed.

The resulting graph is given as a 2D-array of edges. Each element of edges is a pair [u, v] with u < v, that represents an undirected edge connecting nodes u and v.

Return an edge that can be removed so that the resulting graph is a tree of N nodes. If there are multiple answers, return the answer that occurs last in the given 2D-array. The answer edge [u, v] should be in the same format, with u < v.

Example 1:

Input: [[1,2], [1,3], [2,3]]Output: [2,3]Explanation: The given undirected graph will be like this:  1 / \2 - 3

Example 2:

Input: [[1,2], [2,3], [3,4], [1,4], [1,5]]Output: [1,4]Explanation: The given undirected graph will be like this:5 - 1 - 2    |   |    4 - 3

Note:

The size of the input 2D-array will be between 3 and 1000.
Every integer represented in the 2D-array will be between 1 and N, where N is the size of the input array.

Solution

class Solution {    public int[] findRedundantConnection(int[][] edges) {        UnionFind uf = new UnionFind(edges.length+1);        for (int[] edge: edges) {            int a = edge[0], b = edge[1];            if (uf.find(a) == uf.find(b)) return edge;            else uf.union(a, b);        }        return new int[0];    }}class UnionFind {    int[] parents;    public UnionFind(int n) {        parents = new int[n];        for (int i = 0; i < n; i++) parents[i] = i;    }    public int find(int a) {        if (parents[a] != a) return find(parents[a]);        else return a;    }    public void union(int a, int b) {        int pA = find(a), pB = find(b);        if (pA != pB) parents[pB] = pA;    }}

转载地址:http://sajpo.baihongyu.com/

你可能感兴趣的文章
【死磕jeesite源码】Jeesite配置定时任务
查看>>
MFC更换窗口图标
查看>>
[三]JavaIO之IO体系类整体设计思路 流的概念以及四大基础分类
查看>>
Java 读取某个目录下所有文件、文件夹
查看>>
朱晔和你聊Spring系列S1E2:SpringBoot并不神秘
查看>>
2013年度第一期测试沙龙 PPT下载
查看>>
我的Java后端书架 (2016年暮春3.0版)
查看>>
两行代码搞定UITableView无数据无网络显示-b
查看>>
Microsoft Speech SDK开发包 使用
查看>>
Android应用开发基础篇(2)-----Notification(状态栏通知)
查看>>
10 款非常棒的CSS代码格式化工具推荐
查看>>
SQL Server 临时表的删除
查看>>
程序8
查看>>
【原】WebRebuild深圳站的一点感悟
查看>>
QT Basic---Widgets<1>
查看>>
Android开发10.3:UI组件GridView网格视图
查看>>
Power BI的一些视频演示资源
查看>>
TBluetoothLEDevice.UpdateOnReconnect
查看>>
QtTableView 简介
查看>>
Linux系统上安装软件(ftp服务器)
查看>>