备战秋招60天算法挑战,Day22

news2025/1/12 16:18:08

题目链接: https://leetcode.cn/problems/missing-number/

视频题解: https://www.bilibili.com/video/BV1HS42197Hc/

LeetCode 268.丢失的数字

题目描述

给定一个包含 [0, n]n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

举个例子:

输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。

视频题解

丢失的数字

思路来源

思路来源

思路解析

方法一 位运算

首先来看一下异或运算的特点,11转成二进制101113转成二进制1101,它们之间的异或运算如下图:

11 ^ 13 = 611 ^ 11 = 0,可以看出,对于二进制相同的bit位按位异或值是0,比如1 ^ 1 = 00 ^ 0 = 0。不同值bit位按位异或值是1,比如1 ^ 0 = 1

利用异或运算符这个特性我们可以轻松解决这个题目。

对区间[0, n]和数组nums中所有的元素做异或运算,在nums中的元素会出现两次,不在nums中的元素只会出现一次,两个相同的元素做异或值为0,最后的结果就是不在nums中的元素。

比如n = 3nums = [3, 0, 1]0 ^ 1 ^ 2 ^ 3 ^ 3 ^ 0 ^ 1 = (0 ^ 0) ^ (1 ^ 1) ^ (3 ^ 3) ^ 2 = 0 ^ 2 = 2。最终2就是不在nums中的数字。

C++代码

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int nums_len = nums.size();
        int res = nums_len;
        for (int i = 0; i < nums_len; ++i) {
            //[0,n]和nums中的元素做异或操作
            res ^= (i ^ nums[i]); 
        }
        return res;
    }
};

java代码

class Solution {
    public int missingNumber(int[] nums) {
        int nums_len = nums.length;
        int res = nums_len;
        for (int i = 0; i < nums_len; ++i) {
            //[0,n]和nums中的元素做异或操作
            res ^= (i ^ nums[i]);
        }
        return res;
    }
}

python 代码

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        nums_len = len(nums)
        res = nums_len
        for i in range(nums_len):
            #[0,n]和nums中的元素做异或操作
            res ^= (i ^ nums[i])
        return res

方法二 数学运算

因为区间[0, n]上有n + 1个元素,数组nums中只有n个元素,假设缺失的元素为X,我们可以得到如下公式:

0 + 1 +...+ n = nums[0] + nums[1] +...+ nums[n-1] + X 

我们只需要用区间[0, n]所有元素的和减去nums中所有元素的和就得到最终的结果X

C++代码

class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int nums_len = nums.size();
        int res = nums_len;
        for (int i = 0; i < nums_len; ++i) {
            //[0,n]的和减去nums中所有元素的和
            res += (i - nums[i]); 
        }
        return res;
    }
};

java代码

class Solution {
    public int missingNumber(int[] nums) {
        int nums_len = nums.length;
        int res = nums_len;
        for (int i = 0; i < nums_len; ++i) {
            //[0,n]的和减去nums中所有元素的和
            res += (i - nums[i]);
        }
        return res;
    }
}

python代码

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        nums_len = len(nums)
        res = nums_len
        for i in range(nums_len):
            #[0,n]的和减去nums中所有元素的和
            res += (i - nums[i])
        return res

复杂度分析

时间复杂度: 两种方法的整个过程都是只遍历了一遍数组,所以时间复杂度为O(n)n为数组nums的长度。

空间复杂度: 两种方法都只使用了几个整型变量,所以空间复杂度都是O(1)

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

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

相关文章

基于Python flask的岗位招聘数据分析系统,应用Python、Flask框架、Pyecharts、Wordcloud等技术

基于Python Flask的岗位招聘数据分析系统旨在为企业人力资源部门和求职者提供一个全面的数据分析平台&#xff0c;通过对招聘数据的深度挖掘和可视化展示&#xff0c;帮助用户做出更明智的决策。该系统采用了Python、Flask框架&#xff0c;并结合Pyecharts、Wordcloud等技术&am…

Matplotlib基本操作

1.什么是Matplotlib matplotlib 是一个广泛使用的 Python 图形库&#xff0c;用于生成静态、动态和交互式的可视化图表。它最初由 John D. Hunter 创建&#xff0c;并首次发布于2003年。matplotlib 提供了一个面向对象的 API&#xff0c;允许用户创建多种类型的图表&#xff0c…

[JavaScript版本五子棋小游戏]

目录 全部运行代码&#xff1a;五子棋游戏的基本步骤&#xff1a;代码剖析&#xff1a;1. 初始化游戏界面2. 管理游戏状态3. 玩家交互4. 电脑AI5. 胜负判定6. 游戏控制 本文通过实现一个基本的五子棋游戏&#xff0c;展示了如何使用HTML、CSS和JavaScript来构建一个简单的交互式…

ATGM332D-F8N低功耗、小尺寸单北斗多频定位导航模块规格书

ATGM332D-F8N主要 特征 &#xff1a; 1、多频点单北斗接收机 支持B1C独立定位通道数目&#xff1a;176通道支持北斗二号、北斗三号支持B1I、B1C、B2I、B3I、B2a、B2b 定位精度 单点定位精度&#xff1a;<1.0mCEP50推算定位误差&#xff1a;<3&#xff05;&#xff08;定位…

伦敦银行情的软件有什么选择?

普通投资者做伦敦银交易&#xff0c;多以技术分析为主、基本分析为辅的方法作为自己的交易策略&#xff0c;既然提到技术分析&#xff0c;那么伦敦银行情的软件就至关重要&#xff0c;因为我们需要通过这些软件才能看到行情并进行分析&#xff0c;那看伦敦银行情的软件有什么好…

2024.8.21

130124202408211006 DATE #:20240821 ITEM #:DOC WEEK #:WEDNESDAY DAIL #:捌月拾捌 TAGS < BGM "琴师--要不要买菜" > < theme oi-contest > < [NULL] > < [空] > < [空] > 此情可待成追忆&#xff0c;只是当时已惘然 -- 《锦瑟》…

「OC」视图控制器的懒加载策略

「OC」视图控制器的懒加载策略 文章目录 「OC」视图控制器的懒加载策略懒加载懒加载的优点常见的懒加载实现方法使用懒加载的注意事项 控制器的懒加载参考资料 懒加载 懒加载&#xff08;Lazy Loading&#xff09;是一种设计模式&#xff0c;其核心思想是在需要时才进行对象的…

Verilog刷题笔记55

题目&#xff1a; Exams/ece241 2014 q5a You are to design a one-input one-output serial 2’s complementer Moore state machine. The input (x) is a series of bits (one per clock cycle) beginning with the least-significant bit of the number, and the output (Z)…

更快更强,SLS 推出高性能 SPL 日志查询模式

作者&#xff1a;无哲 引言 随着数字化进程的持续深化&#xff0c;可观测性一直是近年来非常火热的话题&#xff0c;在可观测的三大支柱 Log/Trace/Metric 中&#xff0c;日志&#xff08;Log&#xff09;数据一般是最为常见的&#xff0c;企业迈向可观测性的第一步&#xff…

《黑神话:悟空》总销量已破 450 万份,总销售额超过15亿元,对于单机游戏来说,这一成绩意味着什么?

《黑神话&#xff1a;悟空》总销量突破450万份&#xff0c;总销售额超过15亿元&#xff0c;意味着几个关键点&#xff1a; 市场认可度高&#xff1a;这样的销量和销售额表明游戏受到了广泛的玩家欢迎&#xff0c;市场认可度极高。对于单机游戏而言&#xff0c;这代表了其在游戏…

深入浅出:你需要了解的用户数据报协议(UDP)

文章目录 **UDP概述****1. 无连接性****2. 尽最大努力交付****3. 面向报文****4. 多种交互通信支持****5. 较少的首部开销** **UDP报文的首部格式****详细解释每个字段** **UDP的多路分用模型****多路分用的实际应用** **检验和的计算方法****伪首部的详细内容****检验和计算步…

算法4:前缀和(下)

文章目录 和为K的子数组和可被k整除的子数组连续数组矩阵区域和 一定要看懂算法原理之后写代码&#xff0c;博主大概率因注意力不够&#xff0c;看了好多遍&#xff0c;才看懂原理细节。 切记&#xff0c;不彻底懂原理&#xff0c;千万别看代码 和为K的子数组 class Solution …

K8s部署安装

目录 一.K8s简介 1.Kubernetes 的关键概念 2.Kubernetes 的功能优势 3.节点&#xff08;Node&#xff09; 4.组件&#xff08;Component&#xff09; 二.Kubernetes集群架构 三.安装部署环境 1.初始化系统环境 2.安装容器引擎 3. 安装containerd 4.安装crictl工具 5…

鸿蒙(API 12 Beta3版)【DRM会话管理(C/C++)】数字版权保护开发

DRM会话管理&#xff08;MediaKeySession&#xff09;支持媒体密钥管理及媒体解密等&#xff0c;MediaKeySession实例由系统管理里的MediaKeySystem实例创建和销毁。 开发步骤 导入NDK接口&#xff0c;接口中提供了DRM相关的属性和方法&#xff0c;导入方法如下。 #include &…

YoloV8训练单通道数据方法+单通道Onnx模型转换

1. ultralytics/cfg/models/v8/yolov8-xxx.yaml 添加ch: 1 2. ultralytics/utils/checks.py 注释assert amp_allclose(YOLO("yolov8n.pt"), im) 3. ultralytics/nn/tasks.py 添加&#xff1a;batch[img] batch[img][:,:1,:,:] 4. ultralytics/nn/autobacken…

文件存储系统的总结

仪表试验报告整理技巧和反思 仪表调试报告技巧 目的&#xff1a;签字更顺利。报告依据、减少页数、正确率、工作量 表1/2 序号 目的 原因方法 降低签字页数 减少报告页数&#xff0c;增加回路测试类报告的每页信息容量 单元格高度&#xff1a;0.7cm&#xff1b;可以正…

ASP.NET Core 6.0 ServiceCollection 实现依赖注入

ASP.NET Core6 lOC容器 控制反转&#xff08;Inversion of Control, IoC&#xff09;是一种软件设计模式&#xff0c;其目的是降低代码之间的耦合度。在C#中&#xff0c;可以使用依赖注入&#xff08;Dependency Injection, DI&#xff09;来实现控制反转。 一般系统分为 UI …

将iso格式的镜像文件转化成云平台能安装的镜像格式(raw/vhd/QCOW2/VMDK )亲测--图文详解

1.首先,你将你的iso的文件按照正常的流程和需求安装到你的虚拟机中,我这里使用的是vmware,安装完成之后,关机。再次点开你安装好的那台虚拟机的窗口,如下图 选中要导出的镜像,镜像需要关机 2.点击工具栏的文件------选择 导出 整个工程到 ovf 格式—这里你可以选择你要导…

LearnOpenGL——SSAO学习笔记

LearnOpenGL——SSAO学习笔记 SSAO一、基本概念二、样本缓冲三、法向半球四、随机核心转动五、SSAO着色器六、环境遮蔽模糊七、应用SSAO遮蔽因子 SSAO 一、基本概念 环境光照是我们加入场景总体光照中的一个固定光照常量&#xff0c;它被用来模拟光的散射(Scattering)。散射应…

数字图像处理【14】特征检测——Harris角点检测

在上一篇文章已经介绍了opencv特征检测中的一些必要的概念&#xff0c;介绍了什么是特征&#xff0c;什么是角点&#xff0c;这些角点特征可以做什么。今天来看看对于我们人来说很容易就识别到角点特征&#xff0c;对于计算机来说是如何识别的&#xff0c;具体的步嘴原理是怎样…