448. 找到所有数组中消失的数字

简介: 448. 找到所有数组中消失的数字

 448. 找到所有数组中消失的数字

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。

示例 1:

输入:nums = [4,3,2,7,8,2,3,1]

输出:[5,6]


示例 2:

输入:nums = [1,1]

输出:[2]


提示:

  • n == nums.length
  • 1 <= n <= 105
  • 1 <= nums[i] <= n

进阶:你能在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题吗? 你可以假定返回的数组不算在额外空间内。


思路

  • 方法1:利用map统计数字是否出现过
  • 方法2:本质上是把原数组上对应index的值取负来标识某个值是否出现过


时间复杂度:均为O(n)


空间复杂度:方法1 - O(n),方法2 - O(1)

// // 方法1,利用map统计次数:// 空间复杂度:O(N)// func findDisappearedNumbers(nums []int) []int {//     m := make(map[int]int)//     for i := 0; i < len(nums); i++ {//         m[nums[i]] += 1//     }//     res := make([]int, 0)//     for i := 1; i <= len(nums); i++ {//         if _, ok := m[i]; !ok {//             res = append(res, i)//         }//     }//     return res// }// 方法2,参考:https://www.bilibili.com/video/BV1L34y1j7Rp/?spm_id_from=333.337.search-card.all.click&vd_source=2c268e25ffa1022b703ae0349e3659e4// 本质上是把原数组上对应index的值取负来标识某个值是否出现过// 空间复杂度:O(1)funcfindDisappearedNumbers(nums []int) []int {
fori :=0; i<len(nums); i++ {
nums[MyAbs(nums[i])-1] = (-1) *MyAbs(nums[MyAbs(nums[i])-1]) // 下标从0开始,所以要减一操作    }
res :=make([]int, 0)
fori :=0; i<len(nums); i++ {
ifnums[i] >0 {
res=append(res, i+1)
        }
    }
returnres}
funcMyAbs(aint) int {
ifa<0 {
a*=-1    }
returna}

image.gif


目录
相关文章
|
存储 监控 安全
Zabbix登录绕过漏洞复现(CVE-2022-23131)
最近在复现zabbix的漏洞(CVE-2022-23131),偶然间拿到了国外某公司zabbix服务器。Zabbix Sia Zabbix是拉脱维亚Zabbix SIA(Zabbix Sia)公司的一套开源的监控系统。该系统支持网络监控、服务器监控、云监控和应用监控等。Zabbix Frontend 存在安全漏洞,该漏洞源于在启用 SAML SSO 身份验证(非默认)的情况下,恶意行为者可以修改会话数据,因为存储在会话中的用户登录未经过验证。 未经身份验证的恶意攻击者可能会利用此问题来提升权限并获得对 Zabbix 前端的管理员访问权限。
2233 0
Zabbix登录绕过漏洞复现(CVE-2022-23131)
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
阿里云与企业共筑容器供应链安全
172049 127
|
缓存 监控 测试技术
如何利用浏览器的缓存来优化网站性能?
【10月更文挑战第23天】通过以上多种方法合理利用浏览器缓存,可以显著提高网站的性能,减少网络请求,加快资源加载速度,提升用户的访问体验。同时,要根据网站的具体情况和资源的特点,不断优化和调整缓存策略,以适应不断变化的业务需求和用户访问模式。
887 63
|
云安全 人工智能 安全
GenAI浪潮下的安全2.0升级
本次分享的主题是GenAI浪潮下的安全2.0升级,由阿里云智能集团专家团队带来。内容涵盖生成式人工智能云上实践、安全大模型构建智能运营最佳实践以及复杂对抗场景下的AI人脸鉴伪。
560 3
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
533 6
|
边缘计算 人工智能 运维
Linux操作系统:开源力量的崛起与影响###
一场技术革命的回顾 回溯至1991年,当Linus Torvalds宣布Linux操作系统的诞生时,世界或许并未意识到这一举措将如何深刻地改变技术领域的面貌。本文旨在探讨Linux操作系统的发展历程、核心特性、以及它如何引领了一场开源运动,重塑了软件行业的生态。从最初的个人爱好项目成长为全球最广泛采用的服务器操作系统之一,Linux的故事是技术创新与社区精神共同推动下的辉煌篇章。 ###
|
传感器 监控 物联网
什么是物联网卡
物联网卡(IoT SIM卡)是专门为物联网设备提供网络连接的SIM卡,它在物联网技术中扮演着至关重要的角色。以下是对物联网卡的详细解释:
|
SQL XML 缓存
java中jsp详解!!!
JSP(Java Server Pages)是一种动态网页技术标准,允许在HTML页面中嵌入Java代码,实现网页逻辑与设计分离。JSP本质上是Servlet的简化,支持跨平台运行。JSP通过内置对象(如request、response、session等)和指令(如page、include、taglib)提供强大的功能,同时利用EL表达式和JSTL标签库简化页面开发。JSP的核心优势在于快速开发和维护Web应用。
766 0
Google Earth Engine ——HYCOM 数据子集包含变量海洋温度数据集
Google Earth Engine ——HYCOM 数据子集包含变量海洋温度数据集
1637 0