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

力扣-第645题《错误的集合》

一 . 问题描述

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

二 . 了解概念

  1. 重复数字:在数组中出现了两次的数字

  2. 缺失数字:在 1 到 n 范围内应该存在但未出现在数组中的数字

  3. 哈希表:用于统计数字出现频率的数据结构

三 . 解题思路

  1. 使用哈希表统计每个数字的出现次数

  2. 遍历 1 到 n 的所有数字:

    • 如果数字不在哈希表中,则为缺失数字

    • 如果数字在哈希表中且出现次数为2,则为重复数字

  3. 返回找到的重复数字和缺失数字

四 . 解题过程

class Solution {public int[] findErrorNums(int[] nums) {int[] arr = new int[2];LinkedHashMap<Integer, Integer> hashMap = new LinkedHashMap<>();for (int name : nums) {if (hashMap.containsKey(name)) {int count = hashMap.get(name);count++;hashMap.put(name, count);} else {hashMap.put(name, 1);}}for (int i = 1; i <= nums.length; i++) {if (!hashMap.containsKey(i)) {arr[1] = i;} else if (hashMap.get(i) == 2) {arr[0] = i;}}return arr;}
}

五 . 时间复杂度和空间复杂度

  • 时间复杂度:O(n)

    • 第一次遍历数组统计频率:O(n)

    • 第二次遍历1到n检查数字:O(n)

    • 总体为线性时间复杂度

  • 空间复杂度:O(n)

    • 使用了哈希表存储数字及其出现次数,最坏情况下需要存储n个键值对

六 . 自我反思(优化建议)

  1. 空间优化:可以使用数组代替哈希表来统计频率,因为数字范围已知(1到n),可以节省哈希表的开销

  2. 数学方法:可以利用数学公式计算1到n的和与实际数组和的差值来找出缺失和重复的数字

  3. 原地标记:可以在原数组上进行标记(取负数)来标识已访问的数字,无需额外空间

  4. LinkedHashMap:当前解法使用了LinkedHashMap,但实际并不需要保持插入顺序,普通HashMap即可

  5. 提前终止:如果在遍历过程中已经找到重复和缺失的数字,可以提前终止循环

http://www.xdnf.cn/news/94807.html

相关文章:

  • 咖啡机语音芯片方案-WTN6040FP-14S直接驱动4欧/3W喇叭-大功率输出
  • 每日一练(4~23):特别数的和
  • label studio的安装
  • docker底层原理简述
  • 解析虚拟机与Docker容器化服务的本质差异及Docker核心价值
  • 大语言模型(LLM)的Prompt Engineering:从入门到精通
  • Godot学习-3D基本环境设置以及3D角色移动
  • 力扣DAY63-67 | 热100 | 二分:搜索插入位置、搜索二维矩阵、排序数组查找元素、搜索旋转排序数组、搜索最小值
  • 如何预约VMware VCP线下考试?
  • 【Java后端】MyBatis 与 MyBatis-Plus 如何防止 SQL 注入?从原理到实战
  • Kotlin 协程在 LiveData 中的完美封装:CoroutineLiveData 全解
  • Spring Boot 项目:如何在 JAR 运行时读取外部配置文件
  • Ubuntu启动SMB(Samba)服务步骤
  • RocketMQ面试题:进阶部分
  • [LLaVA] Visual Instruction Tuning
  • MFC案例:使用键盘按键放大、缩小窗口图像的实验
  • 【Unity笔记】Unity 编辑器扩展:一键查找场景中组件引用关系(含完整源码)(组件引用查找工具实现笔记)
  • Kafka
  • Vmware安装centos7和Redis
  • KafkaSpark
  • git 将某次提交的某个文件提交到另一个分支
  • 基于CBOW模型的神经网络词向量转换原理与实践
  • SQL 多表查询:数据整合与分析的强大工具
  • sizeof和strlen的区别
  • URP-UGUI交互功能实现
  • NLP高频面试题(五十三)——LLM中激活函数详解
  • 【无人机】无人机光流模块Optical Flow设置(三),光流测距一体传感器的配置。凌启科技的光流测距一体模块的测试。
  • 珈和科技助力“农险提效200%”!“遥感+”技术创新融合省级示范项目荣登《湖北卫视》!
  • Javashop新零售电商系统:构建智能零售生态的终极解决方案
  • 【android bluetooth 框架分析 03】【Bta 层详解 1】【Bluetooth Application Laye 介绍】