当前位置: 首页 > news >正文

并查集——从LeetCode题海中总结常见套路

目录

并查集定义

LeetCode128.最长连续序列

先去重再sort:

改进去重的方法:

参考:


并查集定义

在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(Union-find Algorithm)定义了两个用于此数据结构的操作:

    Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。
    Union:将两个子集合并成同一个集合。
    由于支持这两种操作,一个不相交集也常被称为联合-查找数据结构(Union-find Data Structure)或合并-查找集合(Merge-find Set)。

为了更加精确的定义这些方法,需要定义如何表示集合。一种常用的策略是为每个集合选定一个固定的元素,称为代表,以表示整个集合。接着,Find(x)Find(x)Find(x) 返回 xxx 所属集合的代表,而 Union 使用两个集合的代表作为参数。

LeetCode128.最长连续序列

先去重再sort:

不满足O(N)复杂度的要求,但是却可以击败99%,离谱……

class Solution {
public:int longestConsecutive(vector<int>& nums) {if (nums.empty())return 0;int ans = 1, len = 0;// 去重unordered_set<int> s(nums.begin(), nums.end());vector<int> v(s.begin(), s.end());sort(v.begin(), v.end());for (int i = 1; i < v.size(); i++) {if (v[i] == v[i - 1] + 1) {len++;} else {if (len == 0) {continue;} else {ans = max(ans, len + 1);len = 0;}}}// 进行到最后一个字符的时会出现统计疏漏,需要特别判断一下if (len != 0) {ans = max(ans, len + 1);len = 0;}return ans;}
};

改进去重的方法:

很快提高了空间复杂度!理论上时间复杂度是有提高的,但是LeetCode大数测试点肯定是有问题的……

class Solution {
public:int longestConsecutive(vector<int>& nums) {if (nums.empty())return 0;int ans = 1, len = 0;sort(nums.begin(), nums.end());for (int i = 1; i < nums.size(); i++) {if (nums[i] == nums[i - 1]) // 改进去重的过程continue;if (nums[i] == nums[i - 1] + 1) {len++;} else {if (len == 0) {continue;} else {ans = max(ans, len + 1);len = 0;}}}// 进行到最后一个字符的时会出现统计疏漏,需要特别判断一下if (len != 0) {ans = max(ans, len + 1);len = 0;}return ans;}
};

参考:

  • 力扣


http://www.mrgr.cn/news/43653.html

相关文章:

  • C# 文件与文件夹操作指南:深入探索流、文件流及文件夹管理
  • 查缺补漏----IP通信过程
  • Linux下静态库与动态库制作及分文件编程
  • SQL专项练习第三天
  • allegro精确画圆形边框
  • Perl 子程序(函数)
  • SQL Server—T-sql函数详解
  • CXO、CRO、CMO、CDMO相关概念
  • 开源的云平台有哪些?
  • 【分布式微服务云原生】探索Redis:数据结构的艺术与科学
  • 预算有限也能玩转 AI:香橙派、树莓派与 Jetson 的选择攻略
  • 设备之间的通信方式
  • 如何在 SQL 中插入一条新记录 ?
  • InnoDB 磁盘结构 - RedoLog
  • Abstract Factory(抽象工厂模式)
  • 多模态理论基础——什么是多模态?
  • VSCode debug模式无法跳转进入内置模块
  • STM32中断编程指南:NVIC和中断优先级
  • unity ps 2d animation 蛇的制作
  • VUE2常见问题以及解决方案汇总(不断更新中)