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

临安市住房和建设局网站百度搜索引擎的原理

临安市住房和建设局网站,百度搜索引擎的原理,wordpress 摄影,学生制作网站建设 维护题目 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1:输入:nums [100,4,200,1,3,2] 输出:4…

题目

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

示例 3:

输入:nums = [1,0,1,2]
输出:3

链接:[https://leetcode.cn/problems/longest-consecutive-sequence/description/?envType=study-plan-v2&envId=top-100-liked )

思路

思路一

先排序,然后找最长序列。时间复杂度不符合要求

思路二

时间复杂度为 O(n) 的算法解决此问题。那么只能从头到尾遍历一遍,对于遍历过的数字,要有记忆功能,从记忆中查询的时间复杂度要是 O(1) 。因此,遍历过的数字放到Map里面,Map的key是遍历过的数字,value就是这个数字对应的最长连续序列。
对于每个数字temp,查看比他小1的temp-1是否存在Map里面:如果存在,则value为map.get(temp-1)+1;如果不存在,则循环查看数组里面是否存在temp-1,存在则length++,一直到不再存在为止,那么temp的value就是length
那这样有两个问题:

  1. 查看数组里面是否存在temp-1的操作时间复杂度需要是 O(1),因此一上来遍历一遍数组,将元素放到set当中,判断temp-1是否在set中,从而实现时间复杂度 O(1)
  2. 如果数组是[9,8,7,6,5,4,3,2,1],那么9的时候会全部遍历一遍放到Map当中{9:9}。8的时候又会遍历一遍放到Map当中{9:9,8:8}。时间复杂度为 O(n²) 或者是 O(nm),m是最长序列的值。但实际上87654321均不需要遍历。因此,对于每个数字temp,先判断temp+1是否存在set当中,如果存在,那么temp+1的序列长度一定大于temp的序列长度,对于temp直接跳过就好。

基于第二个问题,思路当中比他小1的temp-1是否存在Map里面的判断永远为否。因为在检查temp-1时,发现temp在set里,跳过,没有放到map里面。

因此,最后的思路是把数组元素全部放到set当中。对于每个数字temp,查看比他大1的temp+1是否存在set里面:如果存在,则跳过;如果不存在,则循环查看set里面是否存在temp-1,存在则length++,一直到不再存在为止,那么temp的value就是length

题解

class Solution {public int longestConsecutive(int[] nums) {Set<Integer> set = new HashSet<>();for (int i = 0; i < nums.length; i++) {set.add(nums[i]);}Map<Integer, Integer> map = new HashMap<>();int max = 0;for (Integer temp:set) {// 先判断temp+1是否存在set当中,如果存在,直接跳过if (set.contains(temp+1)) {continue;}// 不存在,则循环查看set里面是否存在temp-1int length = 1;int t = temp-1;while (set.contains(t)) {length++;t--;}max = Math.max(max, length);map.put(temp, length);}return max;}
}
http://www.dtcms.com/a/545316.html

相关文章:

  • k8s rbac权限最小化实践
  • Javascript数据类型之类型转换
  • 销售拜访前的全面准备指南以及ABC推荐法
  • 优秀网站模板下载网站编程论文
  • 仓颉代码内联策略:性能优化的精密艺术
  • 欧瑞电机编码器引脚定义
  • 中国隧道空间分布
  • 作文网站哪个平台好wordpress超简洁主题
  • 聊城公司网站建设注册域名需要多久
  • 国外摄影网站合肥网站网站建设
  • Vue+Element 封装表格组件
  • 有向图能拓扑排序,必定无环
  • 网络:2.1加餐 - 网络命令
  • 为什么需要设置字符编码?
  • 电影网站如何做seo济南制作公司网站
  • 怎么网站排名seo乐清网络推广公司
  • 仓颉 String 内存表示:从 UTF-8 小对象到零拷贝子串的完整旅程
  • Android Studio新手开发第三十四天
  • 多维c++ vector, vector<pair<int,int>>, vector<vector<pair<int,int>>>示例
  • 【TVM 教程】自定义优化
  • 免费行情网站大全下载成品源码网站
  • 男女生做羞羞事情的网站网站域名怎样选择
  • 做政协网站软件的公司找人做网站 优帮云
  • 电力系统安全新样本:瑞数信息用“动态安全”筑起业务防线
  • 基于Python(Tkinter)实现(图形界面)小说阅读器
  • 选ThinkPad还是ThinkBook?联想乐享智能体让你告别选择困难!
  • 企业网站seo优化怎么做个人网站建设小江
  • 4种智能方法:如何将SIM卡中的短信转移到电脑
  • 【2D/3D户型图编辑器实现-技术栈选择】附demo演示
  • 信息网站开发网络公司人工智能公众号