【C++刷题】力扣-#448-找到所有数组中消失的数字

server/2024/10/25 11:45:22/

题目描述

给你一个含 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]

题解

这个问题可以通过一次遍历来解决,使用数组的索引作为标志位来标记已经出现过的数字。

  1. 遍历数组:遍历整数数组 nums。
  2. 标记数字:对于每个数字 num,通过将 nums[num - 1] 的绝对值取反来标记该数字已经出现过。如果该位置已经是负数,说明该数字已经标记过,因此是出现两次的数字。
  3. 收集结果:再次遍历数组,收集所有出现两次的数字。

代码实现

vector<int> findDisappearedNumbers(vector<int>& nums) {vector<int> result;for (int num : nums) {int index = abs(num) - 1;if (nums[index] >= 0) {nums[index] = -nums[index];}}for (int i = 0; i < nums.size(); ++i) {if (nums[i] > 0) {result.push_back(i + 1);}}return result;
}

复杂度分析

● 时间复杂度:O(n),其中 n 是数组 nums 的长度。我们需要遍历一次数组来标记数字,再遍历一次来收集结果。
● 空间复杂度:O(1),因为我们只使用了常数个额外变量。
这个算法的优势在于它不需要额外的存储空间,并且时间效率较高。


http://www.ppmy.cn/server/134706.html

相关文章

2024 10.25 判断一个矩阵是否对称

主对角线对称 思路&#xff1a;a[i][j]!a[j][i] 第一行和第一列顺序比较&#xff0c;后面依次类推 #include <stdio.h>int main(){int n,m;scanf("%d",&n);int a[n][n];for(int i0;i<n;i){for(int j0;j<n;j)scanf("%d",&a[i][j]);}i…

Fragments by E2B:AI生成应用模板,让应用开发更智能

在人工智能技术飞速发展的今天&#xff0c;我们见证了许多创新工具的诞生&#xff0c;它们正在改变传统的软件开发方式。今天&#xff0c;我要向大家介绍一个名为Fragments by E2B的开源项目&#xff0c;这是一个基于Next.js 14、shadcn/ui、TailwindCSS和Vercel AI SDK构建的A…

什么是RPC

什么是RPC RPC的全称是Remote Procedure Call&#xff0c;即远程过程调用&#xff0c;是一种计算机通信协议。它允许程序在不同计算机之间进行通信和交互&#xff0c;就像本地调用一样。简单解读字面上的意思&#xff0c;远程是指要跨机器而非本机&#xff0c;所以需要用到网络…

在 typescript 中,如何封装一个 class 类来接收接口的响应数据

在 TypeScript 中&#xff0c;封装一个类来接收接口的响应数据是一个常见的需求&#xff0c;特别是在处理后端 API 响应时。这通常涉及到定义与后端 API 响应结构相匹配的接口&#xff08;或类型&#xff09;&#xff0c;并在类中创建方法来处理这些数据。以下是一个简单的示例…

理解dbt artifacts及其实际应用

dbt是数据分析领域的一种变革性工具&#xff0c;它使数据专业人员能够对仓库中的数据进行转换和建模。它的强大功能之一是生成dbt artifacts&#xff1a;dbt运行的结构化输出&#xff0c;提供对dbt项目及其操作的深入了解。 dbt 构件介绍 dbt构件是每次dbt运行时生成的JSON文…

Excel功能区变灰是什么原因造成?怎么解决?

Microsoft Excel是广泛使用的电子表格软件&#xff0c;但有时用户可能会遇到功能区变灰的问题&#xff0c;这可能导致功能无法使用&#xff0c;影响工作效率和用户体验。本文将深入探讨Excel功能区灰色的原因及解决方案&#xff0c;帮助读者快速解决这一问题。 一、Excel功能区…

计算机毕业设计 基于Python的校园个人闲置物品换购平台的设计与实现 Python毕业设计 Python毕业设计选题【附源码+安装调试】

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

STM32G4系列MCU的启动项配置

目录 概述 1 配置方法 1.1 配置类型 1.2 启动模式类别 1.3 注意点介绍 2 应用案例介绍 2.1 主内存启动模式 2.2 GPIO配置启动模式 2.3 注意点介绍 3 物理内存映射 3.1 映射内存类别 3.2 注意点介绍 概述 本文主要介绍STM32G4系列MCU的启动项配置功能&#xff0c;包…