算法的时间复杂度分析习题专题

之前写了一篇重点是讲理论,今天重点在于对于题目的分析

题目难度不分先后,有题目来源会直接给出链接或者位置

第一题:消失的数字

题目来源:LeetCode消失的数字

 

 

 分析

第一种思路分析:

         参考代码:

#include <cstdio>
#include <algorithm>using namespace std;int find_disappear(int nums[], int len)
{int res = -1;//保存结果,-1代表值没有被改变//先对数组进行排序sort(nums, nums + len);//需要两个参数,数组头指针与指针,但是这里不包括尾指针,所以指向数组越界的位置for (int i = 0; i < len; i++){if (i != nums[i]) {//这里直接缺少的就是ires = i;}}//这里就是没有匹配到的情况,就是最大的索引if (res ==  -1) {res = len;}  return res;
}int main()
{int arr[] = {0, 1, 2};//这里长度要单独拿出来计算,因为arr传入到find函数里面,会直接当成一级指针来进行处理//指针一般也就是一般windows上4个字节,linux上八个字节来进行处理int len = sizeof(arr) / sizeof(arr[0]);int res = find_disappear(arr, len);printf("缺失的数字是:%d\n", res);return 0;
}

时间复杂度为O(nlogn)明显与题目要求不符合,no_pass

下面是第二种思路分析

#include <cstdio>int find_number(int *nums, int len)
{//正确的长度是int len_correct = len + 1;//计算正确求和值int sum_correct = (len_correct * (len_correct - 1)) / 2;int sum_wrong = 0;//非正确的求和值	//开始轮替,计算非正确的值,然后相减for (int i = 0; i < len; i++){sum_wrong += nums[i];//因为i本身就是从0开始的,所以用i来累加求和}return sum_correct - sum_wrong;
}int main()
{int arr[] = {0, 1, 3};int res = find_number(arr,3);printf("%d\n", res);return 0;
}

时间度O(n),通过

leetcode提交代码:

class Solution {
public:int missingNumber(std::vector<int>& nums) {int len_correct = nums.size() + 1;int sum_correct = (len_correct * (len_correct - 1)) / 2;int sum_wrong = 0;for (int i = 0; i < nums.size(); ++i) {sum_wrong += nums[i];}return sum_correct - sum_wrong;}
};

 

解决。。。。。持续更新中 

 

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

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

相关文章

CTP:关于cc和bindgen库及rust工程组织

有三个工程目录&#xff0c;cpt-api, ctp-sdk,ctp-strategy 1、ctp-sdk&#xff1a; 主要的目的是基于bindgen库生成与cpp的.h文件相对应一个binding.rs文件&#xff0c;后面供策略使用。 在这个目录下&#xff0c;建一个build.rs,用bindgen库生成cpp.h的头文件相应的rust绑定…

nodejs+vue 网上招聘系统elementui

第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;技术背景 5 3.2.2经济可行性 6 3.2.3操作可行性&#xff1a; 6 3.3 项目设计目标与原则 6 3.4系统流程分析 7 3.4.1操作流程 7 3.4.2添加信息流程 8 3.4.3删除信息流程 9 第4章 系统设计 11 …

linux-定时任务

目录 一、crond命令 1、什么是计划任务 2、crond服务的概念 3、crontab 二、at命令 1、at任务的概念 三、邮件服务 1、概念 2、启动postfix 四、mailx命令 1、三个概念&#xff1a; 2、交互式发邮件 3、非交互式发邮件 四、cron定时任务实践 1、系统定时任务配置…

【HUAWEI】单臂路由

目录 ​ &#x1f96e;写在前面 &#x1f96e;2.1、拓扑图 &#x1f96e;2.2、操作思路 &#x1f96e;2.3、配置操作 &#x1f363;2.3.1、LSW4配置 &#x1f363;2.3.2、R2配置 &#x1f363;2.3.3、测试网络 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &…

Cruise 从零搭建模型

第一步&#xff0c;新建一个project&#xff1a; 下面添加version&#xff1a; 将该新建的task加载进来&#xff0c;然后保存&#xff1a; 保存完之后&#xff0c;文件夹内多了很多内容&#xff1a; .prj 文件是工程文件。 .bdf 是存放模型里面的数据的文件。 可以看出&#…

ElementUI之首页导航+左侧菜单->mockjs,总线

mockjs总线 1.mockjs 什么是Mock.js 前后端分离开发开发过程当中&#xff0c;经常会遇到以下几个尴尬的场景&#xff1a; - 老大&#xff0c;接口文档还没输出&#xff0c;我的好多活干不下去啊&#xff01; - 后端小哥&#xff0c;接口写好了没&#xff0c;我要测试啊&#x…

springcloud之自我介绍

写在前面 在这篇文章 中我们分析了单体应用的问题&#xff0c;以及用来解决这些问题的解决的方案微服务&#xff0c;并接着看了微服务需要考虑的各种&#xff0c;如服务调用&#xff0c;负载均衡&#xff0c;服务治理&#xff0c;链路追踪&#xff0c;分布式事务&#xff0c;等…

Linux多线程【线程互斥与同步】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、资源共享问题1.1、多线程并发访问1.2、临界区与临界资源1.3、“锁” 概念引…

用于自然语言处理的 Python:理解文本数据

一、说明 Python是一种功能强大的编程语言&#xff0c;在自然语言处理&#xff08;NLP&#xff09;领域获得了极大的普及。凭借其丰富的库集&#xff0c;Python 为处理和分析文本数据提供了一个全面的生态系统。在本文中&#xff0c;我们将介绍 Python for NLP 的一些基础知识&…

提升 Windows 生产力的实用工具集:Microsoft PowerToys | 开源日报 No.42

microsoft/PowerToys Stars: 95.2k License: MIT Microsoft PowerToys 是一套用于调整和优化 Windows 体验以提高生产力的实用工具集。该项目包含多个功能模块&#xff0c;其中主要功能有&#xff1a;Always on Top、FancyZones、File Explorer Add-ons 等。其核心优势和关键特…

Java开源工具库使用之Lombok

文章目录 前言一、常用注解1.1 AllArgsConstructor/NoArgsConstructor/RequiredArgsConstructor1.2 Builder1.3 Data1.4 EqualsAndHashCode1.5 Getter/Setter1.6 Slf4j/Log4j/Log4j2/Log1.7 ToString 二、踩坑2.1 Getter/Setter 方法名不一样2.2 Builder 不会生成无参构造方法2…

FPGA 多路视频处理:图像缩放+视频拼接显示,HDMI采集,提供2套工程源码和技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐FPGA图像缩放方案推荐FPGA视频拼接方案推荐 3、设计思路框架视频源选择IT6802解码芯片配置及采集动态彩条缓冲FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 视频拼接算法图像缓存视频输出 4、vivado工程1&am…