
算法
实战算法
顺在路上
编程也是一种美!
展开
-
1579. 保证图可完全遍历
题目思路理解题目意思, 通俗的讲就是把类型3的连线 分别添加到类型1 和 类型2 后, 类型1,2都得是只有一个连通分量, 在这个大前提下, 如何尽可能去除多的连线, 而不影响这个结果.我们需要2个独立的并查集向2个并查集添加 相同的类型3的数据, 如果发现类型3 自身存在无用路径, 则结果count+1类型3数据遍历完成后, 开始分别向独立并查集添加数据, 同第二条一样, 发现无用路径, 结果 count+1全部添加完成, 需要先判定结果是否合法, 2个独立并查集是否真的只有1个连通分量,原创 2021-01-27 17:11:07 · 178 阅读 · 0 评论 -
959. 由斜杠划分区域
题目思路划分区域, 求最终会有多少个区域, 会想到查并集就是做这件事情的.查并集, 划分区域, 统计连通分量, 看下图代码"""959. 由斜杠划分区域"""class UnionFind: def __init__(self, n): self.father = {x:x for x in range(n)} #连通分量统计 self.count = n def find(self, x): if x原创 2021-01-25 11:39:18 · 168 阅读 · 0 评论 -
50. Pow(x, n) 自我实现一个x的n次幂的算法
Pow(x, n) 自我实现一个x的n次幂的算法实现 pow(x, n) ,即计算 x 的 n 次幂函数。Codedef myPow(x, n): if x == 0.0: return 0.0 if n < 0: # 如果为负幂次 则转换为正的 x, n = 1 / x, -n res = 1 while n: if n & 1: # 判定n的二进制位最后一位是否是1原创 2021-01-23 20:46:11 · 344 阅读 · 0 评论 -
1319. 连通网络的操作次数
1319. 连通网络的操作次数用以太网线缆将 n台计算机连接成一个网络,计算机的编号从0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b]连接了计算机 a 和 b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计算机。请你计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回-1 。思原创 2021-01-23 20:41:32 · 230 阅读 · 0 评论 -
721. 账户合并
给定一个列表accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该账户的邮箱地址。现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必定属于同一个人。请注意,即使两个账户具有相同的名称,它们也可能属于不同的人,因为人们可能具有相同的名称。一个人最初可以拥有任意数量的账户,但其所有账户都具有相同的名称。合并账户后,按以下格式返回账户:每个账户的第一个元素是名称,其余元原创 2021-01-18 18:58:01 · 212 阅读 · 1 评论 -
移除最多的同行或同列石头
947. 移除最多的同行或同列石头n 块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。给你一个长度为 n 的数组 stones ,其中 stones[i] = [xi, yi] 表示第i块石头的位置,返回 可以移除的石子 的最大数量。示例 1:输入:stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]输出:5解释:一种移除5 块石头的方法如下所示:移除石原创 2021-01-15 17:10:01 · 183 阅读 · 0 评论 -
228 汇总区间
228. 汇总区间给定一个无重复元素的有序整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b]应该按如下格式输出:"a->b",如果 a != b"a" ,如果 a == b示例 1:输入:nums = [0,1,2,4,5,7]输出:["0->2","4->5","7"]解释:区间范围是:[0,2原创 2021-01-10 17:47:23 · 98 阅读 · 0 评论