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

LeetCode 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^55
1 <= nums[i] <= n
进阶:你能在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题吗? 你可以假定返回的数组不算在额外空间内。

我们可以遍历nums,把遍历到的元素按1到n放到指定为止,具体做法是把当前遍历到的下标为i的元素nums[i]与下标为nums[i] - 1位置的元素交换,如果发现目标位置和源位置的值相同,说明目标位置已经是该值了,此时将该值置为-1,最后下标为-1的值就是数组中消失的数字:

class Solution {
public:vector<int> findDisappearedNumbers(vector<int>& nums) {int n = nums.size();for (int i = 0; i < n; ) {if (nums[i] == -1) {++i;continue;}if (nums[i] - 1 == i) {++i;continue;}if (nums[i] != nums[nums[i] - 1]) {swap(nums[i], nums[nums[i] - 1]);} else {nums[i] = -1;++i;}}vector<int> ans;for (int i = 0; i < n; ++i) {if (nums[i] == -1) {ans.push_back(i + 1);}}return ans;}
};

如果nums的长度为n,则此算法时间复杂度为O(n),空间复杂度为O(1)。

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

相关文章:

  • 力扣 第 463 场周赛
  • 两款快速启动软件下载及安装!(GeekDesk和Lucy)!可图标归类!桌面更简洁
  • eBay运营全链路解析:从售后风控到生命周期营销的效率革命
  • 软件测试从入门到精通:通用知识点+APP专项实战
  • 基于STM32设计的养殖场环境监测系统(华为云IOT)_267
  • 8月23日星期六今日早报简报微语报早读
  • 施工场景重型车辆检测识别数据集(挖掘机、自卸卡车、轮式装载机):近3k图像,yolo标注
  • 奇怪的前端面试题
  • UDP报文的数据结构
  • Python训练营打卡Day41-Grad-CAM与Hook函数
  • 【亲测可用】Suno-API 调用使用指南
  • GEO优化服务引领AI时代营销变革 “AI黄金位”成企业竞争新焦点
  • Leetcode—931. 下降路径最小和【中等】
  • Nginx 优化(一)
  • 百度面试题:赛马问题
  • 小迪安全v2023学习笔记(七十讲)—— Python安全SSTI模板注入项目工具
  • 容器安全实践(三):信任、约定与“安全基线”镜像库
  • 博士招生 | 美国圣地亚哥州立大学 Yifan Zhang 课题组博士招生,AI 安全领域顶尖平台等你加入!
  • 使用 LangChain 和 Neo4j 构建知识图谱
  • Linux docker上部署Dify
  • Linux服务环境搭建指南
  • 第四十三天(JavaEE应用ORM框架SQL预编译JDBCMyBatisHibernateMaven)
  • 海外媒体引流进阶:指纹手机的全维度技术支持与实践应用
  • ​崩坏世界观中的安全漏洞与哲学映射:从渗透测试视角解构虚拟秩序的脆弱性​
  • Base64编码、AES加密、RSA加密、MD5加密
  • 基于大模型的对话式推荐系统技术架构设计
  • 【K8s】整体认识K8s--K8s架构与集群创建过程
  • Doxygen是什么?
  • 多模态大语言VLM模型综述
  • 【GPT入门】第56课 大模型分布式训练的三种方式、模型层介绍及DeepSpeed ZeRO的支持