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

力扣面试150(39/150)

7.23 219. 存在重复元素 II

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 ij ,满足 nums[i] == nums[j]abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false

我的思路:

abs绝对值:i - j <= k

哈希进行存储:键值对->值以及对应的索引

[1,0,1,1] k = 1

​ 0 1 2 3

2-0

这个测试案例告诉我们要注意多个相同的动态改变map里面的值

var containsNearbyDuplicate = function(nums, k) {let numsMap = new Map();// 遍历numsfor(let i = 0 ; i < nums.length ; i++){if(!numsMap.has(nums[i])){numsMap.set(nums[i] , i);}else {// 存在相同的let sub = numsMap.get(nums[i]) - i < 0 ? -(numsMap.get(nums[i]) - i) : numsMap.get(nums[i]) - i;if(sub <= k)return true;{}numsMap.set(nums[i] , i);}}return false;
};

该函数利用哈希表(Map)来存储数组元素及其最新索引,遍历数组时检查当前元素是否已存在,若存在则计算当前索引与存储索引的差值,若差值小于k则返回true,否则更新存储的索引,最终若无符合条件的重复元素则返回false。

7.23 128. 最长连续序列

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

我的思路:

让它排好序

采取的是降序

count = 0 ;

100 map has 100 + 1

->yes : count ++ ; 动态维护max,放入map

-> no : count = 0 ; 放入map

返回max+1 :因为在及逆行count++的时候总会忽略第一个数

我的代码:

var longestConsecutive = function(nums) {let numsMap = new Map();let count = 0 ; let max = 0;nums.sort((a , b) => b - a );console.log(nums);if(nums.length === 0){return 0;}// 遍历numsfor(let i = 0 ; i < nums.length ; i++){if(!numsMap.has(nums[i] + 1)){count = 0 ; numsMap.set(nums[i] , i);}else {if(!numsMap.has(nums[i])){count++;max = max > count ? max : count;numsMap.set(nums[i] , i);}}}return max + 1 ;
};

总结:

该函数通过哈希表和排序来高效地计算数组中连续递减序列的最长长度。时间复杂度主要取决于排序操作(O(n log n)),空间复杂度为 O(n)。

http://www.dtcms.com/a/294777.html

相关文章:

  • PyTorch中的词嵌入层(nn.Embedding)详解与实践指南
  • js生成器
  • 【黑产大数据】2025年上半年互联网黑灰产趋势年度总结
  • MySQL 8.0 OCP 1Z0-908 题目解析(33)
  • 【硬件】Fan in和Fan out
  • 《地牢探险者:深渊回响》(C++游戏,爆肝7.8个小时,全文14591字)(求一个免费的三连)
  • c# sqlsuger 获取关联表中一个值
  • SET: Spectral Enhancement for Tiny Object Detection(CVPR2025)
  • iOS WebView 远程调试实战 解决表单输入被键盘遮挡和焦点丢失问题
  • VRRP技术-设备备份技术
  • 5️⃣ set(集合)速查表
  • UI测试平台TestComplete:高效覆盖风险,加速持续交付
  • 情况:后端涉及到异步操作,数据还没更新完就直接向前端返回success的结果。
  • 如何做好性能测试?
  • 自定义类型:结构体,联合和枚举
  • 慢 SQL接口性能优化实战
  • 线路板快板厂家有哪些?
  • HCIA复习+网络类型及数据链路层协议复习
  • 【已解决】ubuntu执行sudo apt update镜像源更新失败:404 Not Found 没有 Release 文件。
  • 2025暑期—04环境设置-D2L+Jupyter
  • Java应用程序内存占用分析
  • Android root和完整性检测实现方案深度分析
  • 第三章 浏览器 【1. 文档对象模型(DOM)】
  • Pandas库全面学习指南(一)
  • 视觉大模型
  • Linux基本命令
  • 【读代码】Facebook Denoiser:开源端到端语音降噪系统原理与实战
  • 主流软件开发方法综述:从敏捷到开源
  • 表征工程与置信度增强:表征工程是提取隐藏层状态表征,LLM的置信度增强是优化的logist数值
  • 第一章:Go语言基础入门之Hello World与Go程序结构