【剑指 Offer II 118. 多余的边】并查集求回路
class Solution {
int[] parent;
int[] rank;
public void init(int n) {
parent = new int[n + 1];
rank = new int[n + 1];
for (int i = 1; i <= n; i++) {
parent[i] = i;
rank[i] = 1;
}
}
public int find(int x){
if( parent[x] == x){
return x;
}else{
return find(parent[x]);
}
}
public void union(int a,int b){
if( rank[a] >= rank[b]){
parent[b] = a;
rank[a] += rank[b];
return ;
}
parent[a] = b;
rank[b] += rank[a];
return;
}
public int[] findRedundantConnection(int[][] edges) {
int n = edges.length;
init(n);
for (int[] edge : edges) {
int a = edge[0];
int b = edge[1];
int u1 = find(a);
int u2 = find(b);
if( u1 == u2){
return edge;
}
union(u1,u2);
}
return null;
}
}
【剑指 Offer II 118. 多余的边】并查集求回路的更多相关文章
- 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器
剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有 ...
- 【剑指 Offer II 001. 整数除法】同leedcode 29.两数相除
剑指 Offer II 001. 整数除法 解题思路 在计算的时候将负数转化为正数,对于32位整数而言,最小的正数是-2^31, 将其转化为正数是2^31,导致溢出.因此将正数转化为负数不会导致溢出. ...
- 剑指Offer——II平衡二叉树
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None # 这道题使用中序遍历加上 ...
- 【力扣】剑指 Offer II 092. 翻转字符
题目 解题思路 一个很暴力的想法,在满足单调递增的前提下,使每一位分别取 1 或 0,去看看哪个结果小. 递归函数定义int dp(StringBuilder sb, int ind, int pre ...
- 剑指 Offer II Trie前缀树
初始化 数组初始化在class外的话 要memset 在主函数里面memset 在class内不用 062. 实现前缀树 class Trie { public: /** Initialize you ...
- 剑指 Offer II 动态规划
088. 爬楼梯的最少成本 class Solution { public: int minCostClimbingStairs(vector<int>& cost) { int ...
- 剑指 Offer II 二分查找
068. 查找插入位置 class Solution { public: int searchInsert(vector<int>& nums, int target) { int ...
- 剑指 Offer II 堆
059. 数据流的第 K 大数值 class KthLargest { public: priority_queue<int,vector<int>,greater<int&g ...
- 剑指 Offer II 回溯法
086. 分割回文子字符串 用substr枚举 因为是连续的 不是放与不放的问题 class Solution { public: vector<vector<string>> ...
- 剑指 Offer II 树
我为什么要把代码粘在这里 断更很久了,基于一个错误的观念:我想看题,我到leetcode官网看不就行了吗? 但是若干年后我可能还会到我的博客园看看呀,我有可能上刷题网站吗?而且心得不好写到注释上. 记 ...
随机推荐
- NC16527 [NOIP2013]货车运输
题目链接 题目 题目描述 A 国有 n 座城市,编号从 1 到 n ,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆 ...
- MQTT-基础理念
MQTT与HTTP的区别 HTTP协议是客户端与服务端直连请求与响应 MQTT是基于发布订阅模型的轻量级的消息传输协议 MQTT能力 发布:Publish 订阅:Subscribe 代理:Broker ...
- Linux进程与线程的基本概念及区别
前言 假设你正在玩一款在线多人游戏,在游戏中,有多个角色需要进行不同的操作,例如攻击.移动.释放技能等等. 接下来,我们用玩游戏的例子,来解释进程和和线程的概念,以及进程和线程的区别. 进程的基本概念 ...
- 从零开始手写 redis(四)监听器的实现
前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...
- 【Unity3D】法线贴图和凹凸映射
1 法线贴图原理 表面着色器中介绍了使用表面着色器进行法线贴图,实现简单快捷.本文将介绍使用顶点和片元着色器实现法线贴图和凹凸映射,实现更灵活. 本文完整代码资源见→法线贴图和凹凸映射. ...
- 基于Android的“哲学家就餐问题”防死锁的设计与实现
1问题描述 如图1.1,有5个哲学家围着一个大圆桌就餐.哲学家和筷子都按逆时针顺序编号,每个哲学家的编号与他左边的筷子的编号一致. 规定如下: (1)哲学家之间不相互交流: (2)哲学家只做两件事:吃 ...
- RedHat5 安装中文输入法
为了学习linux命令,虚拟机里搞了个RedHat 5.4 .下面是安装中文输入法过程: 1.下载并安装小企鹅输入法 fcitx-3.0.0-1.i386.rpm 2.安装后执行以下命令: # cd ...
- 《深入理解Java虚拟机》(六) 调优策略 -- 笔记
目录 一.操作文档类功能,大量大对象直接进入老年代 问题现象 解决方法 通过单一Java虚拟机管理大量的内存 同一台服务器上部署若干Java虚拟机 二.异步请求大量累积 三.排查问题 排查问题: 可能 ...
- win32-UI Automation
使用UI Automation遍历窗口的所有控件标题和类 #include <Windows.h> #include <stdio.h> #include <UIAuto ...
- 第一百一十篇:内存泄漏和垃圾回收(JS)
好家伙,本篇内容为<JS高级程序设计>第四章的学习笔记 1.内存泄露 1.1.什么是内存泄漏? 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释 ...