如何做公司网站制作,房地产东莞网站建设,外贸网站平台排名,上海 网站建设 排名文章目录 写在前面Tag题目来源题目解读解题思路方法一#xff1a;哈希表 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法#xff0c;两到三天更新一篇文章#xff0c;欢迎催更…… 专栏内容以分析题目为主#xff0c;并附带一些对于本题涉及到的数据结构等内… 文章目录 写在前面Tag题目来源题目解读解题思路方法一哈希表 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法两到三天更新一篇文章欢迎催更…… 专栏内容以分析题目为主并附带一些对于本题涉及到的数据结构等内容进行回顾与总结文章结构大致如下部分内容会有增删 Tag介绍本题牵涉到的知识点、数据结构题目来源贴上题目的链接方便大家查找题目并完成练习题目解读复述题目确保自己真的理解题目意思并强调一些题目重点信息解题思路介绍一些解题思路每种解题思路包括思路讲解、实现代码以及复杂度分析知识回忆针对今天介绍的题目中的重点内容、数据结构进行回顾总结。 Tag
【哈希表】【数组】 题目来源
128. 最长连续序列 题目解读
在无序数组中找到最长的数字连续序列。要求时间复杂度为线性的。 解题思路
方法一哈希表
要求的线性时间复杂度的解法我们使用哈希集合来完成。
维护一个哈希集合将数组中的所有元素加入到集合中然后遍历集合中的数统计这个数两头可以扩展到最大连续长度。
实现代码
class Solution {
public:int longestConsecutive(vectorint nums) {unordered_setint hash;for (int num : nums)hash.insert(num);int ans 0;while (!hash.empty()) {int cur *(hash.begin());hash.erase(cur);int next cur 1, prev cur - 1;while (hash.count(next))hash.erase(next);while (hash.count(prev))hash.erase(prev--);ans max(ans, next - prev - 1);}return ans;}
};复杂度分析
时间复杂度 O ( n ) O(n) O(n) n n n 为数组 nums 的长度。
空间复杂度 O ( n ) O(n) O(n)哈希集合占用了额外的 写在最后
如果文章内容有任何错误或者您对文章有任何疑问欢迎私信博主或者在评论区指出 。
如果大家有更优的时间、空间复杂度方法欢迎评论区交流。
最后感谢您的阅读如果感到有所收获的话可以给博主点一个 哦。