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

128. 最长连续序列

 思路:

剪枝:        判断当前元素是否有前一位元素(是否起始点)

哈希:        插入哈希集合,查询元素

总体:        起始点,从头向前,更新最高长度

语法注意:

(1)HashSetcontains 方法期望引用 &T 而不是值类型 T,主要是为了避免不必要的内存拷贝和移动,同时遵循 Rust 的所有权和借用规则

(2)在 for num in & HashSet 比在 for &num in &Vec 中遍历 快 20 倍。

  • 遍历对象不同HashSet 遍历(for num in &set)避免了重复元素和解引用操作,而 Vec 遍历(for &num in &nums)可能包含重复元素和解引用开销。

  • 性能差异HashSet 提供更高效的查找和避免重复计算,因此在大数据集上,遍历 HashSet 通常更快。

代码:

use std::collections::*;impl Solution {pub fn longest_consecutive(nums: Vec<i32>) -> i32 {let mut set = HashSet::new();for &num in &nums {set.insert(num);}let mut longest = 0;for num in &set {if set.contains(&(*num - 1)) {continue;}let mut temp = *num + 1;while set.contains(&(temp)) {temp += 1;}longest = longest.max(temp - *num);}longest}
}

 

 


http://www.mrgr.cn/news/5911.html

相关文章:

  • 科技大通缩
  • 框架——MyBatis(!!!MyBatis 环境搭建步骤)
  • JAVA设计模式之【单例模式】
  • 一文掌握 Web 测试:功能、界面、兼容与安全的综合测试指南!
  • 【数据分析】数据的离中趋势之一 - 极差、分位距、平均差
  • Jenkins配置SSH凭据
  • CSS的:required和:optional伪类:增强表单字段的视觉识别
  • 【设计模式】建造者模式和单例模式
  • Redis笔记-分布式存储方案中哨兵模式配置
  • oracle数据库缓存区高速缓存区
  • Java导出分类到Excel
  • 从HTTP到HTTPS:SSL加密如何重塑互联网安全格局
  • 机器学习:决策树回归树实现
  • 开发一个免费的图表网站 Free Charts
  • 数据结构-单调栈
  • 视频美颜SDK与直播美颜工具的开发详解与技术优化
  • Llama 3.1 70B与Mistral Large 2 128B深度对比
  • MATLAB CSF布料模拟滤波分类地面点和地物点(71)
  • Tauri简介
  • Docker离线安装