瑞安做网站,100个万能网站,景德镇网站开发,制作网站需要学什么软件有哪些内容Problem: 128. 最长连续序列 文章目录 题目描述思路复杂度Code 题目描述 思路 1.先将数组中的元素存入到一个set集合中#xff08;去除重复的元素#xff09; 2.欲找出最长连续序列#xff08;先定义两个int变量longestSequence和currentSequence用于记录最长连续序列和当前… Problem: 128. 最长连续序列 文章目录 题目描述思路复杂度Code 题目描述 思路 1.先将数组中的元素存入到一个set集合中去除重复的元素 2.欲找出最长连续序列先定义两个int变量longestSequence和currentSequence用于记录最长连续序列和当前最长序列我们可以在遍历给定数组时当前遍历到的元素为nums[i]去set集合中查找nums[i] - 1,是否存在若存在直接遍历下一个nums中的元素若不存在则持续查找nums[i] 1,是否存在于set集合中若存在则更新currentSequence和longestSequence 复杂度
时间复杂度: O ( n ) O(n) O(n)其中 n n n为数组nums的长度 空间复杂度: O ( n ) O(n) O(n) Code
class Solution {
public:/*** Hash* * param nums Given array* return int*/int longestConsecutive(vectorint nums) {unordered_setint set;// Save data to set to achieve deduplicationfor (int i 0; i nums.size(); i) {set.insert(nums[i]);}int longestSequence 0;for (const auto num : set) {// If num-1 does not exist in setif (!set.count(num - 1)) {int currentNum num;int currentSequence 1;// Find num 1.....while (set.count(currentNum 1)) {currentNum 1;// Add one to the current currentSequencecurrentSequence 1;}longestSequence max(currentSequence, longestSequence);}}return longestSequence;}
};