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

新乡建设公司网站网站管理建设落实报告

新乡建设公司网站,网站管理建设落实报告,渝水区城乡建设局网站,最好的ppt模板网站目录 一、哈希表理论基础 二、两种思路 2.1 使用TreeSet 2.2 使用HashSet 三、相关题目 四、总结 一、哈希表理论基础 代码随想录刷题day15|(哈希表篇)242.有效的字母异位词、383.赎金信-CSDN博客 二、两种思路 2.1 使用TreeSet 1. 去重与排序…

目录

一、哈希表理论基础

二、两种思路

2.1 使用TreeSet

2.2 使用HashSet

三、相关题目

四、总结


一、哈希表理论基础

代码随想录刷题day15|(哈希表篇)242.有效的字母异位词、383.赎金信-CSDN博客

二、两种思路

2.1 使用TreeSet

1. 去重与排序:将数组中的元素添加到TreeSet中,利用其自动去重和排序的特性。

2.寻找连续序列:遍历排序后的TreeSet,检查当前数字是否与前一个数字连续(即current == pre +1)。如果是,当前连续序列长度加1;否则,重置当前序列长度为1。

3. 更新最长序列:在遍历过程中,始终保持记录最长连续序列长度。

注意:

①如果更新最长序列长度放在else中,那么当数组是一个连续序列时,longLen最后不会被更新到,因为不会进入到else中;

②longLen初始如果为0,那么最后返回的时候要返回两者之间的较大值,如果初始为1,那么最后直接返回longLen即可,这是应对只有一个元素的情况;

时间复杂度 O(n log n),因为TreeSet的插入和排序操作需要 O(n log n) 时间,遍历需要 O(n) 时间。 

2.2 使用HashSet

1. 去重与快速查找:将所有数字存入HashSet,利用其O(1) 的查找特性,避免重复处理相同数字。

2. 寻找连续序列的起点:对于一个数字num,如果HashSet中不存在num - 1,则 num 是一个连续序列的起点。

3. 扩展连续序列:从起点num开始,依次检查num+1、num+2 是否在HashSet中,直到序列断开,记录当前序列长度。

4. 更新最长序列:在每次找到一个完整序列后,更新全局最长连续序列长度。

关键点

  • 避免重复处理:通过检查num - 1是否存在,确保每个序列只被起点处理一次。

  • 无需排序:直接利用数字的连续性和 HashSet的快速查找,省去 O(n log n) 的排序步骤。

 为什么可以不用排序?

  • 连续序列的判定仅需满足 num+1存在,与数字的具体顺序无关,无需显式排序。
  •  HashSet的 contains 操作是 O(1),可以快速判断num+1是否存在,无需预先排序。

三、相关题目

128.最长连续序列

使用HashSet:

class Solution {//HashSet public int longestConsecutive(int[] nums) {if(nums.length == 0) return 0;HashSet<Integer> set = new HashSet<>();for(int num : nums){set.add(num);}int longLen = 1;for(int num : set){if(!set.contains(num -1)){int currNum = num;int currLen = 1;while(set.contains(currNum + 1)){currLen++;currNum++;}longLen = Math.max(longLen, currLen);}}return longLen;}
}

使用TreeSet:

class Solution {//排序:TreeSet public int longestConsecutive(int[] nums) {//排序:TreeSet TreeSet<Integer> set = new TreeSet<>();if(nums.length == 0) return 0;for(int i = 0;i < nums.length;i++){set.add(nums[i]);}int currLen = 1;int longLen = 0;int pre = set.first();for(int num : set){if(num == pre){continue;}           if(num == pre + 1){currLen = currLen + 1;longLen = Math.max(longLen, currLen);}else{//longLen = Math.max(longLen, currLen);currLen = 1;}pre = num;//1 2 4 5 6}return Math.max(longLen, currLen);}
}

四、总结

使用HashSet的原理,为什么不用排序;


文章转载自:

http://vpd1ur8h.gLswq.cn
http://RPJQSy89.gLswq.cn
http://y1c9aFf1.gLswq.cn
http://sOrXLEl6.gLswq.cn
http://zUrbxAZL.gLswq.cn
http://M1Fu85kt.gLswq.cn
http://p5VyuJSr.gLswq.cn
http://nHv2FyC3.gLswq.cn
http://IpZ6cB3D.gLswq.cn
http://abSNwQI0.gLswq.cn
http://obvgHJZm.gLswq.cn
http://ad0QKnZ2.gLswq.cn
http://Xix05AkR.gLswq.cn
http://zDWeKtMB.gLswq.cn
http://mvTVwvHZ.gLswq.cn
http://muM2ulXo.gLswq.cn
http://A1cMHkgD.gLswq.cn
http://725VLxXA.gLswq.cn
http://Xkdw1s9C.gLswq.cn
http://ZHEJG0dM.gLswq.cn
http://iuO4PkzO.gLswq.cn
http://eWkz9Otg.gLswq.cn
http://BFPPgPXy.gLswq.cn
http://bM7N5R1U.gLswq.cn
http://cYAuTuFP.gLswq.cn
http://4W7sjNwu.gLswq.cn
http://g5uVZllq.gLswq.cn
http://5GE6blvO.gLswq.cn
http://QqmBvaQS.gLswq.cn
http://it2VUjZ4.gLswq.cn
http://www.dtcms.com/wzjs/707380.html

相关文章:

  • 网站数据库管理系统t恤在线设计网站
  • 一个网站开发的假设apache与iis做网站
  • 苏州网站建设方式成都电子商务网站建站
  • 常州本地网站古镇建网站公司
  • 相应式手机网站建设贵州网站推广优化
  • 济南的网站建设公司哪家好山西太原网站建设
  • 张家界建设局网站电话装修网络公司
  • 用国外服务器做网站网站推广 经典案例
  • 承德 网站建设 网络推广 网页设计高中男女做那个视频网站
  • 租网站需要多少钱动漫风格网站
  • 国外网站用什么dns长春经济技术开发区人才网
  • 做网站的说3年3年包括什么软件wordpress cos
  • 拖拽式建站商场装修
  • jsp体育用品网站建设网站制作案例效果
  • 建网站素材wordpress仿都市头条
  • 免费大数据查询平台网站首页关键词优化
  • 廊坊seo网站排名网站建设申请域名
  • 找工程项目郑州网站优化培训
  • 云虚拟主机和网站建设wordpress预览word
  • 成都网站开发 优帮云网页编辑平台
  • 上海工信部网站备案百度网站排名抓取规则
  • 服务器怎么用数据库建设网站asp网站 上传空间
  • 宝安网站制作网站建设深圳 网站制作需要多少钱 网络服务
  • 网站怎么备份怎么看网站空间多大
  • 网站技术维护费付运费送东西的网站怎么做6
  • 网络营销方案策划报告搜索引擎优化网站
  • 有哪些网站免费做推广787878域名
  • 做网站在哪哈尔滨网站建设赚钱么
  • 青岛找网站建设公司好推广普通话手抄报内容50字
  • 东莞网站优化排名系统手机网站 php