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

做网站和做产品wordpress官网中文版下载

做网站和做产品,wordpress官网中文版下载,域名网站如何做市场推广,百度搜索推广是什么想要精通算法和SQL的成长之路 - 最长连续序列 前言一. 最长连续序列1.1 并查集数据结构创建1.2 find 查找1.3 union 合并操作1.4 最终代码 前言 想要精通算法和SQL的成长之路 - 系列导航 并查集的运用 一. 最长连续序列 原题链接 这个题目#xff0c;如何使用并查集是一个小难… 想要精通算法和SQL的成长之路 - 最长连续序列 前言一. 最长连续序列1.1 并查集数据结构创建1.2 find 查找1.3 union 合并操作1.4 最终代码 前言 想要精通算法和SQL的成长之路 - 系列导航 并查集的运用 一. 最长连续序列 原题链接 这个题目如何使用并查集是一个小难点我们可以这么想 对于数组中的每一个元素在初始化的时候根节点是它本身。以它为根节点的最长连续序列是1。在经历过一系列的合并操作之后以示例1来说元素4的根节点就是元素1。那么我们合并操作合并的对象是谁注意题目要求的是连续序列。那么针对每个元素num我进行union(num,num1)即可。由于题目要求的是最长的连续序列因此我们可以在并查集中维护一个max最大值。在合并操作的时候更新它。由于数组内元素的跳跃性我们可以用一个HashMap替代并查集的int[]数组。 1.1 并查集数据结构创建 class UnionFind {private MapInteger, Integer parent;private MapInteger, Integer rank;private int max;public UnionFind(int[] nums) {max 1;HashMapInteger, Integer tmpParent new HashMap();HashMapInteger, Integer tmpRank new HashMap();// 初始化操作每个元素的根节点是它本身。并且以该元素作为根节点时的最长连续序列长度是1for (int num : nums) {tmpParent.put(num, num);tmpRank.put(num, 1);}parent tmpParent;rank tmpRank;} }1.2 find 查找 因为我们在合并过程中进行union(num,num1)操作以nums [100,4,200,1,3,2]为例那么1001 101101这个元素是否在集合当中呢 我们看下常规的函数 public int find(int x) {while (x ! parent[x]) {x parent[x];}return x; }而我们在本题当中使用HashMap作为替换存储同时我们还需要考虑到对象不存在的情况代码如下 public int find(int x) {// 因为我们是以每个元素 1 来合并的因此1后的元素不一定存在于集合当中。// 这里就要特判否则就会导致NPEnull和int进行 比较会NPEif (!parent.containsKey(x)) {return x;}if (parent.get(x) x) {return x;}parent.put(x, find(parent.get(x)));return parent.get(x); }1.3 union 合并操作 public void union(int x, int y) {// 如果不存在也要直接返回if (!parent.containsKey(y)) {return;}int rootX find(x);int rootY find(y);// 是同一个根节点直接返回if (rootX rootY) {return;}// 区间合并算出合并后的连续序列长度int tmpSum rank.get(rootY) rank.get(rootX);if (rank.get(rootX) rank.get(rootY)) {rank.put(rootX, tmpSum);// 更新rootY的根节点为rootXparent.put(rootY, rootX);} else {rank.put(rootY, tmpSum);parent.put(rootX, rootY);}// 合并的同时还要维护max值最长连续序列长max Math.max(max, tmpSum); }1.4 最终代码 public int longestConsecutive(int[] nums) {if (nums.length 0) {return 0;}UnionFind unionFind new UnionFind(nums);for (int num : nums) {// 将当前元素和 1后的值进行合并unionFind.union(num, num 1);}return unionFind.max; }class UnionFind {private MapInteger, Integer parent;private MapInteger, Integer rank;private int max;public UnionFind(int[] nums) {max 1;HashMapInteger, Integer tmpParent new HashMap();HashMapInteger, Integer tmpRank new HashMap();// 初始化操作每个元素的根节点是它本身。并且以该元素作为根节点时的最长连续序列长度是1for (int num : nums) {tmpParent.put(num, num);tmpRank.put(num, 1);}parent tmpParent;rank tmpRank;}public int find(int x) {// 因为我们是以每个元素 1 来合并的因此1后的元素不一定存在于集合当中。// 这里就要特判if (!parent.containsKey(x)) {return x;}if (parent.get(x) x) {return x;}parent.put(x, find(parent.get(x)));return parent.get(x);}public void union(int x, int y) {if (!parent.containsKey(y)) {return;}int rootX find(x);int rootY find(y);// 是同一个根节点if (rootX rootY) {return;}int tmpSum rank.get(rootY) rank.get(rootX);if (rank.get(rootX) rank.get(rootY)) {rank.put(rootX, tmpSum);parent.put(rootY, rootX);} else {rank.put(rootY, tmpSum);parent.put(rootX, rootY);}max Math.max(max, tmpSum);} }
http://www.hkea.cn/news/14510089/

相关文章:

  • 怎样建设电子商务网站手工制作大全视频教程
  • wordpress网站变灰河南建站网站
  • 58做网站一年多少钱做企业网站到哪里找
  • 织梦做中英文网站步骤网站界面设计套题
  • 提高网站规范化建设南山区公司网站制作
  • 福田企业建站推广服务公司网站开发费分摊多少年
  • 建设信用卡中心网站首页附近最近的广告公司
  • 网站方案书山东农业工程学院教务网络管理系统
  • 浙江省住房和城乡建设局网站营销型网站模板下载
  • 装修设计网站免费大型网站开发工具
  • 在线免费视频网站推广网站用户账号ip查询
  • 网站内容搜索IT周末做网站违反制度么
  • 织梦婚纱网站模板网站建设图片素材
  • asp三层架构做网站企业网站宣传方案
  • 北京做兼职从哪个网站好网站 字体
  • 网站模板怎么用法济南网站推广建设有限公司
  • 网站制作需求表福利 源码 wordpress
  • 网站注册页面设计建筑工程人才培训网
  • 网站的外链是什么高端网站设计找哪个公司
  • 东丽手机网站建设wordpress主题 芯片
  • 做网站需要的企业网站外包
  • 西安做网站公司哪家比较好公司网站建站模板
  • 哈尔滨网站推广优化公司做wordpress 主题下载站
  • 网络推广网站建设有限公司医药企业建设网站需要什么
  • 桓台网站建设国外办公室设计欣赏
  • 网站建设最好的公司哪家好菏泽做网站建设的公司
  • 做站长工具网站推广网站2024
  • 做网站什么公司好营销策划的十个步骤
  • 网站开发能自学吗揭阳模板建站开发公司
  • 惠州市网站建设企业虚拟主机配置WordPress