Leetcode268. 丢失的数字

news2024/11/22 18:22:54

Every day a leetcode

题目来源:268. 丢失的数字

解法1:排序

代码:

/*
 * @lc app=leetcode.cn id=268 lang=cpp
 *
 * [268] 丢失的数字
 */

// @lc code=start
class Solution
{
public:
    int missingNumber(vector<int> &nums)
    {
        int n = nums.size();
        sort(nums.begin(), nums.end());
        for (int i = 0; i < n; i++)
            if (nums[i] != i)
                return i;
        return n;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n logn),其中 n 是数组 nums 的长度。排序的时间复杂度是O(n logn),遍历的的时间复杂度是O(n),故总的时间复杂度是O(n logn)。

空间复杂度:O(logn),其中 n 是数组 nums 的长度。空间复杂度主要取决于排序的递归调用栈空间。

解法2:哈希

哈希集合的每次添加元素和查找元素的时间复杂度都是O(1)。

使用哈希集合,可以将时间复杂度降低到O(n)。

代码:

class Solution
{
public:
    int missingNumber(vector<int> &nums)
    {
        unordered_set<int> uset;
        int n = nums.size();
        for (int i = 0; i < n; i++)
            uset.insert(nums[i]);
        for (int i = 0; i < n; i++)
            if(!uset.count(i))
                return i;
        return n;
    }
};

结果:

在这里插入图片描述

复杂度分析:

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

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

解法3:数学

提示0 <= nums[i] <= n,我们知道答案就是[0, n]中的一个数。

0+1+…+n=n(n+1)/2,减去数组nums的总和,就是我们要的答案。

代码:

class Solution
{
public:
    int missingNumber(vector<int> &nums)
    {
        int n = nums.size();
        return n * (n + 1) / 2 - accumulate(nums.begin(), nums.end(), 0);
    }
};

运行结果:

在这里插入图片描述

复杂度分析:

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

空间复杂度:O(1)。

解法4:位运算

详情见于官方题解丢失的数字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/489297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分数傅里叶变换、小波变换和自适应神经网络

与普通的傅立叶变换&#xff0c;即 1 阶的分数阶傅立叶变换不同&#xff0c;分数阶傅立叶变换&#xff08;p ≠ 1&#xff09;提取的特征同时结合了原始图像的空间和频率特性。 分数傅里叶变换图像是介于原始图像和全傅里叶变换图像之间的东西。 Vander Lugt 相关器可以根据傅…

Playwright之初体验

参考文件 官方文档&#xff1a;https://playwright.dev/docs/intro GitHub链接&#xff1a;https://github.com/microsoft/playwright-python Playwright简介 Playwright Test是专门为满足端到端测试的需求而创建的。Playwright支持所有现代搜索引擎&#xff0c;包括Chrome、…

linux基础简介(一)

1.Linux内核 ​ Linux 系统从应用角度来看&#xff0c;分为内核空间和用户空间两个部分。内核空间是 Linux 操作系统的主要部分&#xff0c;但是仅有内核的操作系统是不能完成用户任务的。丰富并且功能强大的应用程序包是一个操作系统成功的必要件。 ​ Linux 的内核主要由 5…

Android Framework基础面试篇~

在Android应用开发面试中&#xff0c;针对Framework的问题是常被考察的。以下是一些常见的Framework金典面试题目及其详解&#xff1a; 1. 什么是Android应用生命周期&#xff1f;你能描述一下它包含哪几个阶段吗&#xff1f; Android应用生命周期指的是应用从启动到关闭的整…

[oeasy]python0048_注释_comment_设置默认编码格式

注释Comment 回忆上次内容 使用了版本控制 git 制作备份进行回滚 尝试了 嵌套的控制结构 层层 控制 不过 除非 到不得以尽量不要 太多层次的嵌套 这样 从顶到底含义 明确而且 还扁平 扁平 也能 含义明确 还可以 做点什么&#xff1f; 让程序含义 更加明确呢&#xff1f;&…

数据结构学习分享之栈和队列详解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:数据结构学习分享⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你了解更多数据结构的知识   &#x1f51d;&#x1f51d; 数据结构第五课 1. 前言&a…

文心一言 VS chatgpt (14)-- 算法导论3.2 2~3题

二、证明等式&#xff08;3.16&#xff09;&#xff1a;a ^ {\log_b c} c ^ {\log_b a}。 文心一言&#xff1a; chatgpt&#xff1a; 我们需要证明的等式为&#xff1a; a log ⁡ b c c log ⁡ b a a^{\log_b c} c^{\log_b a} alogb​cclogb​a。 首先&#xff0c;将 l…

时序预测 | MATLAB实现ARIMA-BP组合模型时间序列预测

时序预测 | MATLAB实现ARIMA-BP组合模型时间序列预测 目录 时序预测 | MATLAB实现ARIMA-BP组合模型时间序列预测预测效果基本介绍模型原理程序设计参考资料 预测效果 基本介绍 时序预测 | MATLAB实现ARIMA-BP组合模型时间序列预测。 模型原理 ARIMA-BP组合模型是一种常用的时间…

2023年第二届材料科学与工程国际会议(CoMSE 2023) | IOP-JPCS出版

会议简介 Brief Introduction 2023年第二届材料科学与工程国际会议(CoMSE 2023) 会议时间&#xff1a;2023年7月21日-23日 召开地点&#xff1a;中国泰州 大会官网&#xff1a;www.icomse.org CoMSE 2023由四川大学、华南理工大学亚热带建筑科学国家重点实验室、国际电气电子和…

PCL学习四:RANSAC-随机采样一致性

参考引用 Point Cloud Library黑马机器人 | PCL-3D点云 1. RANSAC 概念及作用 RANSAC&#xff08;Random Sample Consensus&#xff0c;随机采样一致性&#xff09;是一种迭代方法&#xff0c;作用&#xff1a;从包含异常值的一组数据中估计数学模型的参数&#xff0c;RANSAC 算…

AIGC:【LLM(一)】——LoRA微调加速技术

文章目录 一.微调方法1.1 Instruct微调1.2 LoRA微调 二.LoRA原理三.LoRA使用 一.微调方法 Instruct微调和LoRA微调是两种不同的技术。 1.1 Instruct微调 Instruct微调是指在深度神经网络训练过程中调整模型参数的过程&#xff0c;以优化模型的性能。在微调过程中&#xff0c…

Flutter——最详细(TextField)使用教程

TextField简介 文本输入框&#xff0c;拥有复杂的属性。可指定控制器、文字样式、装饰线、行数限制、游标样式等。监听输入框变动事件。 使用场景&#xff1a; 搜索框&#xff0c;输入账号密码等 属性作用controller输入框监听器decoration输入框装饰属性textAlign内容对齐方式…

UE5.1.1 C++ 从0开始 (1.人物移动)

开个天坑&#xff0c;UE5.1.1的移动代码做了一个大更新&#xff0c;对于我这种万年蓝图然后正在转C的人来说可以说是个挑战也可以说是个更方便我去工作的一个点。同时斯坦福大学的那个教程的开头几个章节就不适用了&#xff0c;对于学习UE5.1.1的同学来说。所以我这里会尽量每天…

[230506] 2021年托福阅读真题第6篇|Water and Life on Mars|15:30~16:30|16:30~19:19

正确率&#xff1a;6/10 ​​​​​​​ Water and Life on Mars Paragraph 1: The question of life on Mars depends heavily on the characteristics of its air and water. Mars has a relatively thin and dry atmosphere, with a high percentage of carbon dioxide com…

想转行大数据,需要学习什么?

Python近段时间一直涨势迅猛&#xff0c;在各大编程排行榜中崭露头角&#xff0c;得益于它多功能性和简单易上手的特性&#xff0c;让它可以在很多不同的工作中发挥重大作用。 正因如此&#xff0c;目前几乎所有大中型互联网企业都在使用 Python 完成各种各样的工作&#xff0…

Spark大数据处理讲课笔记3.7 Spark任务调度

文章目录 零、本节学习目标一、有向无环图&#xff08;一&#xff09;DAG概念&#xff08;二&#xff09;实例讲解 二、Stage划分依据&#xff08;一&#xff09;两阶段案例&#xff08;二&#xff09;三阶段案例 三、RDD在Spark中的运行流程&#xff08;一&#xff09;RDD Obj…

buuctf7

目录 Crypto MD5 Url编码 看我回旋踢 web [极客大挑战 2019]BuyFlag​ [BJDCTF2020]Easy MD5 Crypto MD5 1.下载文件 2.md5在线解密 3.外包flag Url编码 使用url在线解码 看我回旋踢 下载&#xff0c;得到这串字符&#xff0c;搜一下synt编码 看到使用凯撒密码&#x…

2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。

2023-05-04&#xff1a;用go语言重写ffmpeg的scaling_video.c示例&#xff0c;用于实现视频缩放&#xff08;Scaling&#xff09;功能。 答案2023-05-04&#xff1a; 这段代码实现了使用 libswscale 库进行视频缩放的功能。下面是程序的主要流程&#xff1a; 1.获取命令行参…

唐书计组第三章总线部分课后习题和解答

我自己的一些总结 总线周期分为哪四个阶段 申请分配阶段寻址阶段存数阶段结束阶段 总线分为哪四种通信方式 同步通信异步通信半同步通信分离式通信 总线有哪几种判优方式 链式查询 计数器定时查询 独立请求方式 计算数据传输率 3.14设总线的时钟频率为8MHz,一个总线周期…

(3)信号槽

目录 1.信号槽的概念 2.信号槽的连接 2.1自带信号 → 自带槽 2.2 自带信号 → 自定义槽 2.3 自定义信号 1.信号槽的概念 信号槽指的是信号函数与槽函数的连接&#xff0c;可以使用不同的对象通过信号槽连接在一起&#xff0c;从而实现对象之间的通信。 可以把信号槽的连接…