LeetCode:面试题:消失的数字——时间复杂度

news2024/11/23 23:02:57

题目:数组nums中包含0~n的所有整数,但其中缺失了一个数,请写代码找出那个缺失的整数,要求在时间复杂度为O(N)的时间内完成

思路1:冒泡排序+遍历(下一个数不等于上一个数+1,这个下一个数就是消失的数)

世间复杂度O(logN*N)
代码:

int  miss(int nums[], int N)
{
	//冒泡排序
	int i = 0;
	for (i = 0; i < N - 1; i++)
	{
		int j = 0;
		for (j = 0; j < N - 1 - i; j++)
		{
			if (nums[j] > nums[j + 1])
			{
				int temp = nums[j];
				nums[j] = nums[j + 1];
				nums[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < N - 1; i++) {
		/*printf("%d\n", nums[i]);*/
		if (nums[i + 1] != nums[i] + 1)
		{
			return nums[i] + 1;
		}
		
		
	}
	
	
}
//LeetCode:面试题
int main()
{
int nums[10] = { 0,1,2,3,6,5,7,8,9,10 };
	int N = 10;
	int ret=miss(nums, N);
	printf("%d", ret);
	return 0;
}

运行结果:
在这里插入图片描述

思路2:0+N利用等差数列求和公式计算出结果-数组中的值的和,结果就是消失的数字

时间复杂度O(N)
代码:

int main()
{
	int nums[10] = {0,1,2,3,6,5,7,8,9,10};
	int N = 10;
	int ret=miss(nums, N);
	printf("%d", ret);
	return 0;

}
int miss(int nums[], int N)
{
	int re= N*(N + 1) / 2;//等差数列求和公式
	for (int i = 0; i < N; i++)
	{
		re -= nums[i];
	}
	return  re;
}

运行结果:
在这里插入图片描述

思路3:单身狗思路:异或(相同为0相异为1)

用异或创造出0~N的数X
再用X于数组异或,相同的数都会被异或为0,剩下的那个X的值就是缺失的值
代码:

int main()
{
	int nums[10] = { 0,1,2,3,6,5,7,8,9,10 };
	int N = 10;
	int ret = miss(nums, N);
	printf("%d", ret);
	return 0;

}
int miss(int nums[], int N)
{
	int x = 0;
	for (int i = 1; i <= N; ++i)
	{
		x ^= i;
	}
	for (int i = 0; i < N; ++i)
	{
		x ^= nums[i];
	}
	return x;
}

运行结果:
在这里插入图片描述

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

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

相关文章

Mybatis中 #{} 和 ${} 的区别,SLQ注入

#{}:预编译处理&#xff0c;类似于占位符。${}:字符直接替换 预编译处理&#xff1a;Mybatis在处理#{}时候&#xff0c;会将SQL中的#{}转换为&#xff1f;&#xff0c;使⽤ PreparedStatement 的 set ⽅法来赋值。 直接替换&#xff1a;是MyBatis 在处理 ${} 时&#xff0c;就是…

浏览器调试Android App

浏览器调试Android App 1. 背景2. 调试工具3. 手机设置4. 打开浏览器(edge)5. 连接手机6. 点击inspect 开始调试 1. 背景 在工作中经常会遇到在原生app中嵌套h5&#xff0c; 但是在某些需要在app里面调试的内容&#xff0c; 却没有像chrome开发者工具这样的工具来帮助我们快速…

PDF文件转换成word软件有哪些?分享两个文件格式转换软件

在日常办公中&#xff0c;我们经常使用各种办公软件&#xff0c;其中PDF和Word是最常见的两种格式。相较于Word文件&#xff0c;PDF文件具有更强的兼容性和安全性&#xff0c;因此我们通常会选择以PDF格式分享文件。然而&#xff0c;如果我们需要提取PDF文件中的部分内容&#…

VPP编译安装及测试

参考&#xff1a;FD.io VPP环境下运行用户应用程序教程 环境 操作系统&#xff1a;centos7.4&#xff0c;且需要联网VPP版本&#xff1a;2009网卡&#xff1a;10G VPP编译 使用git clone VPP项目指定分支的代码&#xff08;注意&#xff1a;不要使用VPP的release版本包&…

设计模式-职责链模式在Java中使用示例-采购审批系统

场景 采购单分级审批 采购审批是分级进行的&#xff0c;即根据采购金额的不同由不同层次的主管人员来审批&#xff0c;主任可以审批5万元以下&#xff08;不包括5万元&#xff09; 的采购单&#xff0c;副董事长可以审批5万元至10万元&#xff08;不包括10万元&#xff09;的…

基于C语言的哈夫曼转化软件

完整资料进入【数字空间】查看——baidu搜索"writebug" 该软件可实现如下功能&#xff1a; 用户可以通过点击“打开文件”按钮打开本地计算机中任意一个文本文件&#xff0c;点击确认将其文本导入到程序输入文本框中&#xff0c;也可以直接在文本框中通过键盘键入文…

502 Bad GateWay报错的解决方法

什么是502 bad gateway 报错 简单来说 502 是报错类型代码 bad gateway 错误的网关。是Web服务器作为网关或代理服务器时收到无效的响应。 用我们的口语说就是运行网站的服务器暂时挂了(不响应)。 产生错误的原因 1.连接超时 我们向服务器发送请求 由于服务器当前链接太多&am…

js设置一个定时器,定时发送请求

1.setTimeout方式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…

整流电路设计

一、交直流电区别 交流电&#xff1a;一般指大小和方向都随时间作周期性变化的电压或电流。交流电的极性在一个周期内变换多次&#xff0c;而直流电则保持恒定。 直流电&#xff08;电压或电流&#xff09;&#xff1a;直流电的方向不随时间而变化。直流电通常又分为恒定电压…

【Linux命令200例】chmod设置文件或目录的访问权限

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入…

Python获取接口数据

首先我们需要下载python&#xff0c;我下载的是官方最新的版本 3.8.3 其次我们需要一个运行Python的环境&#xff0c;我用的是pychram&#xff0c;需要库的话我们可以直接在setting里面安装 代码&#xff1a; # -*- codeing utf-8 -*- from bs4 import BeautifulSoup # 网页…

Stable Diffusion生成艺术二维码

Stable Diffusion生成艺术二维码 文章会有浏览问题&#xff0c;点击此处查看原文 首先需要一个Stable Diffusion服务环境&#xff0c;《Stable Diffusion服务环境搭建&#xff08;远程服务版&#xff09;》如果你已经有了那就忽略 一、准备一个比较好的二维码底图 首先解析二…

第一章 介绍 对 HL7 版本 2 的支持

文章目录 第一章 介绍InterSystems 对 HL7 版本 2 的支持HL7 版本 2 路由生成 第一章 介绍 InterSystems 对 HL7 版本 2 的支持 InterSystems 产品支持 HL7 版本 2 消息作为虚拟文档。虚拟文档是 InterSystems 产品仅部分解析的一种消息。这种消息具有标准的production 消息头…

微信朋友圈推广优势有哪些?

你知道的朋友圈推广效果有哪些 1、定向精准触达 在朋友圈广告推广中&#xff0c;人群的性别、年龄、兴趣爱好、活动范围、学历、手机型号、推广时段等&#xff0c;这些都是可以进行精准定向。通过精准定向&#xff0c;可以找到企业想找到的人群。 2、用户高活跃度 大家平均每…

亿发数字化生产工厂MES管理系统,助力云南工厂实现智能制造

近年来&#xff0c;云南省将制造业数字化作为“工业强省”战略的关键和打造现代产业体系的重中之重&#xff0c;而随着工业4.0时代的来临&#xff0c;数字化转型已成为制造企业企业蓬勃发展之路。在这个过程中&#xff0c;MES精益制造管理系统显露出潜力&#xff0c;成为云南省…

前端生成批量二维码,并且下载到本地

Ⅰ- 壹 - 功能展示和使用需求 需求描述 前端生成批量二维码&#xff0c;并且下载&#xff0c;本项目使用了 vue3. 功能展示 Ⅱ - 贰 - 封装代码 需要的库 yanr add qrcodejs2-fix // 生成二维码 yarn add html2canvas // 转图片 yarn add jszip// 压缩包 yarn add file-sa…

25.2 matlab里面的10中优化方法介绍——插值法(matlab程序)

1.简述 插值法 插值法又称“内插法”&#xff0c;是利用函数f (x)在某区间中已知的若干点的函数值&#xff0c;作出适当的特定函数&#xff0c;在区间的其他点上用这特定函数的值作为函数f (x)的近似值&#xff0c;这种方法称为插值法。如果这特定函数是多项式&#xff0c;就称…

(css)列表点击前后样式

(css)列表点击前后样式 效果&#xff1a; html <ul v-show"rightOne" class"one-content"><liv-for"(item,index) in exampleList":key"index"click"searchHandle(item,index)"class"liClass":class&qu…

Linux基本指令操作

登陆指令&#xff08;云服务器版&#xff09; 当我们获取公网IP地址后&#xff0c;我们就可以打开xshell。 此时会有这样的界面&#xff0c;我们若是想的登陆&#xff0c;则需要输入以下的指令 ssh 用户名公网IP地址 然后会跳出以下的窗口 接着输入密码——密码便是先前定好…

ArcGIS Engine 与 Visual Studio版本对照表

通过C#对于Arcgis的二次开发&#xff0c;需要Visual Studio版本需要与ArcGIS Engine对应&#xff0c;Visual Studio版本的或高或低都不能使ArcObjects SDK for microsoft.Net framework安装成功。下面是各个版本的对照表。 序号ArcEngine版本visual Studio版本Network版本110.…