LeetCode 128. 最长连续序列的 Rust 实现如下usestd::collections::HashSet;implSolution{pubfnlongest_consecutive(nums:Veci32)-i32{letset:HashSeti32nums.into_iter().collect();letmutlongest0;fornuminset{// 如果 num - 1 存在说明 num 不是连续序列的起点跳过if!set.contains((num-1)){letmutcurrentnum;letmutlength1;// 向后查找连续的数字whileset.contains((current1)){current1;length1;}longestlongest.max(length);}}longest}}思路把所有数字放入 HashSet方便 O(1) 查找。遍历集合中的每个数字 num。如果 num - 1 不存在说明 num 是一个连续序列的起点。从 num 开始不断检查 num 1、num 2 是否存在统计当前连续序列长度。更新最大长度。复杂度· 时间复杂度O(n)每个数字最多被访问两次HashSet 查找平均为 O(1)。· 空间复杂度O(n)用于存储 HashSet。示例fnmain(){letnumsvec![100,4,200,1,3,2];letresultSolution::longest_consecutive(nums);println!({},result);// 输出 4因为最长连续序列是 [1, 2, 3, 4]}
阅读完成 · 觉得有帮助?