数据结构与算法——1122—复杂度总结检测相同元素

1、复杂度总结

1、时间复杂度计算遵循的原则

1、复杂度与其具体的常系数无关(即:常数项的系数不要)

2、多项式级复杂度相加的时候,把其高项作为结果(即:多项式只保留最大项

3、O(1)含义为:某个任务通过有限可数的资源即可完成

      注:有限可数与输入的数据量n无关——常量复杂度

2、关于复杂度的经验性结论

1、一个顺序结构的代码,时间复杂度为O(1)——单纯的顺序或选择

2、采用分治法的二分策略,时间复杂度为O(log2 n)  //log以2为底n的对数

3、一个简单的for循环,时间复杂度为O(n)

4、两个顺序执行的for循环,时间复杂度是取高项——并列的不累加

5、一般情况下,两层嵌套的for循环,时间复杂度为O(n²)

6、一般情况下,会使用递归,分治,动态规划等方法,用空间换取时间效率——时间宝贵、空间廉价

时间复杂度与代码结构有关,空间复杂度与数据结构有关

2、数据结构

数据结构分为线性结构和非线性结构,线性结构分为顺序存储和链式存储

线性结构:数组、链表、队列、栈、字符串

非线性结构:集合、树、图

数组和链表区别:

数组:空间连续、类型相同、长度固定的集合(顺序存储)

链表:增删快,但付出了查找的代价(链式存储)

数组链表
是否连续一定不一定
大小固定不固定
查找按照索引O(1)O(n)
按照数值有序采用二分搜索
无序O(n)
插入删除头部O(n)O(1)
中间O(n)O(n)
尾部O(1)O(n)

例题

存在一个含有n个元素的数组,数组内元素值均为0——n-1,检测数组内是否含有相同重复元素

解法

解法

时间复杂度

空间复杂度

1、暴力

O(n**2)

O(1)

2、容器

O(n)

O(n)

3、额外申请一个计数数组

4、排序后查看相邻数组元素值

O(n*logn)

O(log2n)

5、检测是否有没有出现的元素

O(n**2)

O(1)

6、sort+二分

更高

O(n)

7、在数组内部,将元素下标与元素值一一对应

O(n)

O(1)

1、按顺序把数组内每一个元素取出来,与后面每一个元素进行比较,如果有重复则报错

2、申请一个与原数组个数相同的数组,里面保存出现次数(2、3)

6、申请一个与原数组相同的数组,先将第一个元素放入数组内,接下来使用二分搜索法查找每个元素是否存在数组内

第七种方法代码

#include<iostream>bool check(int arr[],int length)
{int index = 0;for (int i = 0; i < length; i++){if (arr[index] == index){index++;}else{if (arr[arr[index]] == arr[index]){return false;}else{int t = arr[arr[index]];arr[arr[index]] = arr[index];arr[index] = t;}}}return true;
}int main()
{int arr[9] = { 1,2,8,4,3,5,0,7,6 };int length = sizeof(arr)/sizeof(int);if (check(arr, length)){printf("没有重复元素");}else{printf("有重复元素");}return 0;
}

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

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

相关文章

Qt界面设计时使各控件依据窗口缩放进行栅格布局的方法

图1 最终效果 想要达成上述图片的布局效果&#xff0c;具体操作如下&#xff1a; 新建一窗体&#xff1a; 所需控件如下&#xff1a; Table View控件一个&#xff1b; Group Box控件一个&#xff1b; Push Button控件2个&#xff1b; Horiziontal Spacer控件2个&#xf…

mac安装Pytest、Allure、brew

安装环境 安装pytest 命令 pip3 install pytest 安装allure 命令&#xff1a;brew install allure 好吧 那我们在安装allure之前 我们先安装brew 安装brew 去了官网复制了命令 还是无法下载 如果你们也和我一样可以用这个方法哦 使用国内的代码仓库来执行brew的安装脚本…

数据结构C语言描述5(图文结合)--队列,数组、链式、优先队列的实现

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…

一篇文章了解机器学习

一篇文章了解机器学习&#xff08;上&#xff09; 一、软件版本安装二、数据集的加载三、数据集的切分四、数据特征提取及标准化1、字典数据的特征提取2、文本特征向量的提取3、数据标准化处理 四、特征降维注&#xff1a;训练器的区别&#xff1a;&#xff1a;五、模型的训练与…

day03(单片机高级)RTOS

目录 RTOS(实时操作系统) 裸机开发模式 轮询方式 前后台&#xff08;中断方式&#xff09; 改进&#xff08;前后台&#xff08;中断&#xff09;&#xff09;定时器 裸机进一步优化 裸机的其他问题 RTOS的概念 什么是RTOS 为什么要使用 RTOS RTOS的应用场景 RTOS的…

Hello-Go

Hello-Go 环境变量 GOPATH 和 GOROOT &#xff1a;不同于其他语言&#xff0c;go中没有项目的说法&#xff0c;只有包&#xff0c;其中有两个重要的路径&#xff0c;GOROOT 和 GOPATH Go开发相关的环境变量如下&#xff1a; GOROOT&#xff1a;GOROOT就是Go的安装目录&…

pytorch官方FasterRCNN代码详解

本博文转自捋一捋pytorch官方FasterRCNN代码 - 知乎 (zhihu.com)&#xff0c;增加了其中代码的更详细的解读&#xff0c;以帮助自己理解该代码。 代码理解的参考Faster-RCNN全面解读(手把手带你分析代码实现)---前向传播部分_手把手faster rcnn-CSDN博客 1. 代码结构 作为 to…

SpringBootTest启动时出现循环依赖问题

在公司项目开发中由于SpringBoot启动类配置了setAllowCircularReferences为true在特定的业务逻辑下需要该配置&#xff0c;但我们需要使用SpringBootTest单元测试的时候引入我们开发的配置文件发现不生效&#xff0c; 解决方法&#xff1a; SpringBootTest(properties "…

力扣11.22

44. 通配符匹配 给你一个输入字符串 (s) 和一个字符模式 &#xff0c;请你实现一个支持 ‘?’ 和 ‘*’ 匹配规则的通配符匹配&#xff1a; ‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符序列&#xff08;包括空字符序列&#xff09;。 判定匹配成功的充要条件是&a…

@RequestBody和前端的关系以及,如何在前后端之间传递数据?

RequestBody 注解在 Spring MVC 中用于将 HTTP 请求体中的数据绑定到控制器方法的参数上。为了更好地理解 RequestBody 和前端之间的关系&#xff0c;我们可以从以下几个方面进行探讨&#xff1a; 1. 请求体的格式 前端发送的请求体通常是一个 JSON 字符串&#xff0c;也可以…

全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS系统定制开发

8、RTOS系统定制开发 此处以在rtos/components/aw目录下创建一个简单的软件包为例&#xff0c;帮助客户了解RTOS环境&#xff0c;为RTOS系统定制开发提供基础。 RTOS环境下的软件包主要由三部分组成&#xff0c;源文件&#xff0c;Makefile&#xff0c;Kconfig&#xff0c;如下…

springboot实战(13)(@PatchMapping、@RequestParam、@URL、ThreadLocal线程局部变量)

目录 一、PATCH请求方式。 二、实现用户更新头像功能。 三、注解RequestParam。 四、注解URL。&#xff08;对传来的参数是否是合法地址进行校验&#xff09; 一、PATCH请求方式。 patch中文翻译&#xff1a;局部、小块。PATCH 请求主要用于对已存在的资源进行局部修改&#xf…

nvm安装node遇到的若干问题(vscode找不到npm文件、环境变量配置混乱、npm安装包到D盘)

问题一&#xff1a;安装完nvm后需要做哪些环境变量的配置&#xff1f; 1.打开nvm文件夹下的setting文件&#xff0c;设置nvm路径和安装node路径&#xff0c;并添加镜像。 root: D:\software\nvm-node\nvm path: D:\software\nvm-node\nodejs node_mirror: https://npmmirror.c…

《Shader 入门精要》学习笔记 茵蒂克丝

渲染流水线 《UnityShader入门精要》学习1_cpu设置渲染状态是什么-CSDN博客 UnityShader 基础 《UnityShader入门精要》学习2_unityshader入门精要2-CSDN博客 学习Shader需要的数学基础 《UnityShader入门精要》学习3_透视投影到-1到1空间-CSDN博客 实现一个简单的顶点/…

《C++20 新特性:为加密货币交易系统注入高效动力》

在加密货币风靡全球的今天&#xff0c;加密货币交易系统的高效性和安全性变得愈发关键。C20 的出现&#xff0c;为开发这类复杂系统带来了一系列令人瞩目的新特性&#xff0c;利用这些特性可以打造出更卓越的加密货币交易系统。 理解加密货币交易系统的需求 加密货币交易系统…

ansible操作随记(一)

0、其他 #shell模块 执行shell指令 ansible all -m shell -e "timedatectl show" ansible web -m shell -a "date"ansible web -m shell -a "echo * soft nofile 1048576 >> /etc/security/limits.conf" -b --become-meth…

面向FWA市场!移远通信高性能5G-A模组RG650V-NA通过北美两大重要运营商认证

近日&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;其旗下符合3GPP R17标准的新一代5G-A模组RG650V-NA成功通过了北美两家重要运营商认证。凭借高速度、大容量、低延迟、高可靠等优势&#xff0c;该模组可满足CPE、家庭/企业网关、移动热点、高清视频…

深入理解 Spring Boot 的 CommandLineRunner 原理及使用

引言 在开发 Spring Boot 应用程序时&#xff0c;我们经常需要在应用程序启动后执行一些初始化任务&#xff0c;比如加载初始数据、连接外部服务、执行健康检查等。Spring Boot 提供了 CommandLineRunner 接口&#xff0c;使得这些任务的实现变得非常简单和直观。本文将深入探…

2024年11月21日Github流行趋势

项目名称&#xff1a;twenty 项目维护者&#xff1a;charlesBochet, lucasbordeau, Weiko, FelixMalfait, bosiraphael项目介绍&#xff1a;正在构建一个由社区支持的现代化Salesforce替代品。项目star数&#xff1a;21,798项目fork数&#xff1a;2,347 项目名称&#xff1a;p…

华科第一届网络安全挑战赛wp

文章目录 华科第一届网络安全挑战赛wpwebsecure_shellpyssrf misc一闪一闪亮晶晶 华科第一届网络安全挑战赛wp web secure_shell 考点&#xff1a;exec()无回显 先测试一下能不能执行 cmd1;sleep 4 发现反应了4秒&#xff0c;能执行 然后直接 cat /f* > 1.txt 最后访问/1.…