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

Java实现 LeetCode 448 找到所有数组中消失的数字 448. 找到所有数组中消失的数字 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [5... 阅读详情

Every day a leetcode

题目来源:448. 找到所有数组中消失的数字

解法1:STL set

set 是一个集合类型的容器,里面的元素具有唯一性,并且所有元素都会根据元素的键值自动被排序,以红黑树为底层数据结构。

我们使用集合set记录nums数组的元素,再遍历set找出找到所有的数组nums中消失的数字。

代码:

/*
 * @lc app=leetcode.cn id=448 lang=cpp
 *
 * [448] 找到所有数组中消失的数字
 */

// @lc code=start
class Solution
{
public:
    vector<int> findDisappearedNumbers(vector<int> &nums)
    {
        int n = nums.size();
        set<int> s;
        vector<int> ans;
        for (int i = 0; i < n; i++)
            s.insert(nums[i]);
        for (int i = 1; i <= n; i++)
            if (s.find(i) == s.end())
                ans.push_back(i);
        return ans;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中n为数组nums的元素个数。

空间复杂度:O(n),其中n为数组nums的元素个数。

解法2:原地修改

由于nums 的数字范围均在 [1,n] 中,我们可以利用这一范围之外的数字,来表达「是否存在」的含义。

具体来说,遍历 nums,每遇到一个数 x,就让 nums[x−1] 增加 n。由于 nums 中所有数均在 [1,n] 中,增加以后,这些数必然大于 n。最后我们遍历 nums,若 nums[i] 未大于 n,就说明没有遇到过数 i+1。这样我们就找到了缺失的数字。

注意,当我们遍历到某个位置时,其中的数可能已经被增加过,因此需要对 n 取模来还原出它本来的值。

代码:

/*
 * @lc app=leetcode.cn id=448 lang=cpp
 *
 * [448] 找到所有数组中消失的数字
 */

// @lc code=start
// class Solution
// {
// public:
//     vector<int> findDisappearedNumbers(vector<int> &nums)
//     {
//         int n = nums.size();
//         set<int> s;
//         vector<int> ans;
//         for (int i = 0; i < n; i++)
//             s.insert(nums[i]);
//         for (int i = 1; i <= n; i++)
//             if (s.find(i) == s.end())
//                 ans.push_back(i);
//         return ans;
//     }
// };
class Solution
{
public:
    vector<int> findDisappearedNumbers(vector<int> &nums)
    {
        int n = nums.size();
        for (auto &num : nums)
        {
            int x = (num - 1) % n;
            nums[x] += n;
        }
        vector<int> ret;
        for (int i = 0; i < n; i++)
        {
            if (nums[i] <= n)
            {
                ret.push_back(i + 1);
            }
        }
        return ret;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n),其中 n 是数组 nums 的长度。

空间复杂度:O(1)。

YOLOv10改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度 HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。 阅读详情

相关推荐

OCS2 移动机械臂深度解析:ocs2_mobile_manipulator 与 ocs2_mobile_manipulator_ros 源码全拆解

摘要:本文深入解析OCS2移动机械臂MPC控制框架的两个核心工具包。ocs2_mobile_manipulator负责算法建模,通过MobileManipulatorInterface统一构建最优控制问题,支持4种机械臂模型并实现自动维度推导;ocs2_mobile_manipulator_ros负责ROS集成,包含MPC求解、虚拟跟踪等4个核心节点。文章详细剖析了工具包分工、最优控制建模架构(含动力学、代价约束设计)、ROS运行管线、参数配置映射,并提供了高效的源码阅读顺序建议,帮助开发者快速掌握移动机械

m0_73309445的博客 656

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

Leetcode 448. 找到所有数组中消失的数字1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/ 具体思路是: 如果是 for 循环过来的,先不更改数组的值, 如果是递归过来的则更改为 0。 更改数组的值之后,再去更改以数组的值为下标的 数组的值, 这样只要在数组中出现的值,一定会被改成 0   代码我已经进行了详细的注释,理解应该没有问题,读

珍惜 8977

Mathtype公式排版避坑指南:固定行距20磅下如何完美显示上下标(实测有效)

本文针对学术论文在固定行距20磅要求下,Mathtype公式上下标显示不全或被裁剪的问题,提供了实测有效的解决方案。文章深入剖析了固定行距与公式排版的冲突原理,并详细指导用户通过调整Mathtype的“定义间距”参数(如下标深度、上标高度),以及利用“格式化公式”功能进行批量处理,确保公式在严格遵守期刊格式要求的同时清晰完整显示。

weixin_29228203的博客 1071

leetcode第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 <= 1

m0_51456787的博客 7328

Visual Studio Code + MCP Server + Claude Code 三件套进行 ABAP 开发

本文介绍了如何在Visual Studio Code中利用Claude Code和SAP官方提供的MCP Server进行ABAP开发。作者分享了19年ABAP开发经验,从手动编码到如今通过自然语言生成高质量代码的技术演进。详细说明了配置步骤:启用ADT MCP Server、安装Claude Code扩展、配置.claude.json文件,并验证MCP Server的14个功能。通过实例演示了如何用自然语言指令让Claude Code创建包含冒泡排序实现和单元测试的ABAP类,展示了MCP Server在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1301

Android CCodec (十一) Codec2Buffer BufferPool分析

1、序言 2、C2BlockPool分析 3、SimpleC2Component关于BlockingBlockPool的实现 4、总结

给大佬递杯卡布奇诺的博客 4024

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

力扣448 找到所有数组中消失的数字 题干 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] 解析 说一下本人怎么理解本题的。 首先给定数组长度为n ,正常来说是可以满足 数字

Castle Yeager 成长之路 373

WS2812和homeassistant握手

本文学习了WS2812和homeassistant握手,后期会分享更多有趣物联网的操作从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。...

vor234的博客 816

力扣(LeetCode)448. 找到所有数组中消失的数字

给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] java版 可以定义一个长为n...

weixin_30685047的博客 216

6、基于深度强化学习的无人机路径规划

本文介绍了一种结合人工势场法的改进DQN深度强化学习算法在无人机路径规划中的应用。通过设计合理的网络结构、状态空间、动作空间和融合引力-斥力机制的奖励函数,实现了无人机在复杂环境中的自主避障与目标导向飞行。采用轻量级神经网络提升实时性,并在Gazebo仿真环境中进行训练与测试,结果表明该算法具有快速收敛、高成功率和良好适应性。实验评估指标包括损失函数、最大Q值和任务成功率,验证了方法的有效性。文章还探讨了其在物流配送、农业植保和环境监测等领域的应用前景,并展望了多无人机协同与复杂环境适应性等未来研究方向。

html8的博客 242

Eclipse邂逅Deepseek:本地化部署全攻略

通过前面一系列的步骤,我们成功地在 Eclipse 中完成了 Deepseek 的本地化部署,并且对部署后的功能进行了测试和优化,还解决了可能遇到的一些常见问题。这一过程不仅让我们体验到了将强大的大语言模型与高效的开发环境相结合的魅力,也为我们在软件开发过程中带来了诸多便利。本地化部署 Deepseek 到 Eclipse,使得我们在代码编写过程中能够获得智能的代码补全和精准的问答支持,大大提高了开发效率。同时,本地化部署保障了数据的安全性和隐私性,避免了数据在传输过程中可能面临的风险。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4524

Leetcode(448)——找到所有数组中消失的数字

Leetcode_448——找到所有数组中消失的数字 题目 题解 方法一:鸽笼原理(The Pigeonhole Principle)+交互元素到对应下表索引上 思路 ​  由题目知,nums 且 nums 中的数字一定属于 [1, n]。所以可以在第一个 for 循环中让 nums[i] 加上特定次数的 nums.size() 。而 nums[i] 加 nums.size() 的次数等于数组 nums 中 i+1 值的个数。 ​  至于为什么是加 nums.size() ,是为了后续的判断。在最后一次

KCDCY的博客 699

[QMT量化交易小白入门]-五十、十年基本保证每年盈利,全天ETF候稳稳的幸福

全局参数raise_rate = -1 # 触发rebalance的上涨比例period: 设定为22,表示每22个交易日执行一次调仓(即大约每月一次)。这是策略的时间框架基础。raise_rate: 初始值设为-1,意味着默认情况下不会因为资产的涨幅而触发调仓。这一参数用于控制是否基于资产表现动态调整仓位。run_count: 用于记录策略运行的次数,帮助判断何时执行定期调仓。1、为了简便计算,回撤时将调仓再平衡是先卖出再买入,没有比较持仓,实盘时是需要计算的,减少交易费用。

木头大左的博客 808

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

题目: 448. 找到所有数组中消失的数字 - 力扣(LeetCode) (leetcode-cn.com) 思路一:排序 分析: 找到所有在 [1, n] 范围之间没有出现在数组中的数字,将数组进行排序,然后查找前后的数相差是否为0或者1,如果不满足,则存在没有出现过的数字。尤其注意开头和最后一个元素,首元素是否为1,最后一个元素是否等于长度 步骤: 将数组进行排序 判断首元素是不是1,不为1,就将【1,nums[0]】之间的数存入数组 遍历数组,判断前后元素是不是相差0或1,不是,就将两个元

蜀沐的博客 226

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

文章摘要:该算法通过将输入数组本身作为哈希表来高效查找1~n范围内缺失的数字。核心思路是:遍历数组时,将每个元素值映射为数组下标,并将对应位置的元素加上n作为标记;再次遍历时,未被标记的位置即为缺失数字。最后恢复数组原值。时间复杂度O(n),空间复杂度O(1)(不包括返回数组)。关键步骤包括:1) 原地哈希标记;2) 收集未标记的缺失值;3) 还原原始数组。这种方法避免了额外空间使用,实现了最优解。

2401_82472941的博客 568

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

leetcode 448.找到所有数组中消失的数字 题目描述 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,...

EngineerHe的博客 644

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

《LeetCode力扣练习》第448题 找到所有数组中消失的数字 Java

《LeetCode力扣练习》第448题 找到所有数组中消失的数字 Java 一、资源 题目: 给你一个含 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

XRT_knives的博客 475

[Golang]力扣Leetcode - 448. 找到所有数组中消失的数字(哈希)

[Golang]力扣Leetcode - 448. 找到所有数组中消失的数字(哈希)

皮埃尔的博客 387

#力扣 LeetCode448. 找到所有数组中消失的数字 @FDDLC

题目描述: 448. 找到所有数组中消失的数字 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution { public List<Integer> findDisappearedNumbers(int[] a) { List<Integer> ans=new LinkedList<>(); int mod=a.length+1; for(int .

LiuXingchang的博客 344

力扣第448题:找到所有数组中消失的数字

学习目标: 写了快两个星期力扣了,记录一下自己的力扣生活 学习内容: 力扣448. 找到所有数组中消失的数字 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] 来源:力扣(LeetCode

童一的博客 202

《LeetCode刷题》—448. 找到所有数组中消失的数字

《LeetCode刷题》—448. 找到所有数组中消失的数字

小贺想改变 685

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

Leetcode 448.找到所有数组中消失的数字 题目: 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] 题解一: /** * * 找出 1 - n 中没有出现的数字

qq_33894488的博客 206

力扣leetcode之Java刷题448找到所有数组中消失的数字

力扣leetcode之Java刷题

小李子Lee 271

Leetcode刷题(448. 找到所有数组中消失的数字)

Leetcode刷题(448. 找到所有数组中消失的数字)一.题目二.代码(C)方法一方法二三.提交记录方法一方法二四.备注 一.题目 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可...

Umbraner的博客 440

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

leetcode448. 找到所有数组中消失的数字 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,2...

peony的博客 245

力扣(leetcode)第448题找到所有数组中消失的数字(Python)

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。最后,我写了一篇MySQL教程,里面详细的介绍了MySQL的基本概念以及操作指令等内容,欢迎阅读!输入:nums = [4,3,2,7,8,2,3,1]输入:nums = [1,1]

qq_58737789的博客 673
上一篇: Leetcode441. 排列硬币
下一篇: Leetcode459. 重复的子字符串
UestcXiye
博客等级 码龄8年 9032粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值