【刷题记录】——时间复杂度

本系列博客为个人刷题思路分享,有需要借鉴即可。

1.目录大纲:
在这里插入图片描述

2.题目链接:
T1:消失的数字:LINK
T2:旋转数组:LINK

3.详解思路:

T1:
在这里插入图片描述
思路1:先排序,再与正常的数字相比较即可。
在这里插入图片描述

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<stdio.h>int int_cmp(const void* e1,const void* e2)
{return *(int*)e1 - *(int*)e2;
}int missingNumber(int* nums, int numsSize) 
{//先排序qsort(nums,numsSize,sizeof(int),int_cmp);//生成正常的数组与之比较int i = 0;int lose = 0;for (i = 0; i < numsSize+1; i++){if (i != nums[i]){lose = i;break;}}return lose;
}int main()
{int arr[9] = { 9,6,4,2,3,5,7,0,1 };int ret = missingNumber(arr, sizeof(arr)/sizeof(arr[0]));printf("%d\n", ret);return 0;
}

思路2:先把正常数组数字全部加起来,然后减去原数组的数字
在这里插入图片描述

int missingNumber(int* nums, int numsSize){//思路二:先加起来然后减去,即可得到消失的数字
int i = 0;
int lose = 0;
int sum = 0;
//加上0到numsSize全部的数字
for(i = 0;i<numsSize+1;i++)
{sum+=i;
}
//减去原数组0到numsSize的数字
for(i = 0;i<numsSize;i++)
{sum-=nums[i];
}
//得到消失的数字
lose = sum;
return lose;
}

思路3:异或运算
前提知识:
0 ^ X = X;//任何数字跟0异或都是原来的数
X ^ X = 0;//两个一样的数字进行异或得到的是0
X ^ Y ^ X = Y;//异或操作满足交换律
在这里插入图片描述

int missingNumber(int* nums, int numsSize){// //思路二:先加起来然后减去,即可得到消失的数字
// int i = 0;
// int lose = 0;
// int sum = 0;
// //加上0到numsSize全部的数字
// for(i = 0;i<numsSize+1;i++)
// {
//     sum+=i;
// }
// //减去原数组0到numsSize的数字
// for(i = 0;i<numsSize;i++)
// {
//     sum-=nums[i];
// }
// //得到消失的数字
// lose = sum;
// return lose;//思路三:异或操作
int i = 0;
int lose = 0;
//异或正常的数组
for(i = 0;i<numsSize+1;i++)
{lose^=i;
}
//异或原来的数组
for(i = 0;i<numsSize;i++)
{lose^=nums[i];
}
//返回
return lose;
}

T2:
在这里插入图片描述
思路1:借助一个变量一个一个挪动
在这里插入图片描述

void rotate(int* nums, int numsSize, int k) {int temp = 0;int i = 0;//旋转几次while (k--){//开始第一组挪动temp = nums[numsSize - 1];//先把最后一个数字放到临时变量中for (i = numsSize - 2; i >= 0; i--){nums[i+1] = nums[i];}//挪动数组往前一位nums[0] = temp;//把临时变量中的值放到数组第一个}
}int main()
{int arr[7] = { 1,2,3,4,5,6,7 };rotate(arr,7,3);int i = 0;for (i = 0; i < 7; i++){printf("%d ", arr[i]);}return 0;
}

思路2:一步到位,拷贝法
在这里插入图片描述

void rotate(int* nums, int numsSize, int k) {if(k>numsSize)k%=numsSize;//新数组,拷贝int arr[numsSize];int i = 0;for(i = 0;i<numsSize;i++){arr[i] = nums[i];}//覆盖原数组内容for(i = 0;i<k;i++){nums[k-1-i] = arr[numsSize-1-i];}for(i = 0;i<numsSize-k;i++){nums[k+i] = arr[i];}
}

思路3:逆置
在这里插入图片描述

void Reverse(int* nums,int left,int right){while(left<right){nums[left] = nums[left]^nums[right];nums[right] = nums[left]^nums[right];nums[left] = nums[left]^nums[right];left++;right--;}}void rotate(int* nums, int numsSize, int k) {if(k>numsSize)k%=numsSize;//逆置前半部分Reverse(nums,0,numsSize-k-1);//逆置后半部分    4         6Reverse(nums,numsSize-k,numsSize-1);//逆置整体Reverse(nums,0,numsSize-1);}

完。

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

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

相关文章

【python】print输出的格式化

在Python中&#xff0c;有几种方式来格式化prin函数的输出。以下是一些常见的方法&#xff1a; 1. 使用百分号 % 运算符&#xff08;传统方法&#xff09;: 使用 % 操作符来进行格式化是一种较老的方法&#xff0c;但它仍然有效。 name "Alice"age 25print("…

线性代数的本质 1 向量

向量是线性代数中最为基础的概念。 何为向量&#xff1f; 从物理上看&#xff0c; 向量就是既有大小又有方向的量&#xff0c;只要这两者一定&#xff0c;就可以在空间中随便移动。 从计算机应用的角度看&#xff0c;向量和列表很接近&#xff0c;可以用来描述某对象的几个不同…

【Java程序设计】【C00268】基于Springboot的CSGO赛事管理系统(有论文)

基于Springboot的CSGO赛事管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的赛事管理系统 本系统分为系统功能模块、管理员功能模块、参赛战队功能模块以及合作方功能模块。 系统功能模块&#xff1a;在系…

使用lodash防抖节流

Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。 Lodash 简介 | Lodash中文文档 | Lodash中文网 (lodashjs.com) 第一步&#xff1a;下载 npm install --save lodash 第二步&#xff1a;引入lodash import * as _ from lodash 什么是防抖和…

基于SpringBoot的助农产品采购平台

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

详细介绍推荐商品推荐算法

推荐商品推荐算法是电子商务网站、在线商店和零售商中常用的技术&#xff0c;用于向用户推荐他们可能感兴趣的商品。这些算法基于用户的历史行为、购买记录、浏览习惯和其他相关信息&#xff0c;以提高用户满意度和销售额。以下是几种常见的推荐商品推荐算法&#xff1a; …

MySQL数据库⑨_事务(四个属性+回滚提交+隔离级别+MVCC)

目录 1. 事务的概念和四个属性 2. 事务的支持版本 3. 事务的提交方式 4. 事务的相关演示 4.1 常规操作_回滚_提交 4.2 原子性_演示 4.3 持久性_演示 4.4 begin自动更改提交方式 4.5 单条SQL与事务的关系 5. 事务的隔离级别 5.1 四种隔离级别 5.2 查看与设置隔离级别…

计算机毕业设计 | vue+SpringBoot选课管理系统(附源码)

1&#xff0c;绪论 1.1 开发背景 随着我国高等教育的发展&#xff0c;数字化校园将成为一种必然的趋势&#xff0c;国内高校迫切需要提高教育工作的质量与效率&#xff0c;学生成绩管理工作是高校信息管理工作的重要组成部分&#xff0c;与国外高校不同&#xff0c;他们一般具…

数字图像处理实验记录八(图像压缩实验)

前言&#xff1a;做这个实验的时候很忙&#xff0c;就都是你抄我我抄你了 一、基础知识 1&#xff0e;为什么要进行图像压缩&#xff1a; 图像的数据量巨大&#xff0c;对计算机的处理速度、存储容量要求高。传输信道带宽、通信链路容量一定&#xff0c;需要减少传输数据量&a…

【Vivado常见问题】【DRC NSTD-1 DRC UCIO-1】无法生成bitstream(部分管脚位置或电平未指定)

假如工程就是有些信号暂时没法指定管脚呢&#xff0c;比如顶层设计端口包含串口&#xff0c;LED、按键&#xff0c;此时只想验证按键和串口&#xff0c;LED由于当前硬件限制没有对应的物理电路&#xff0c;没法确定管脚。这种情况可以使用一句脚本语言来暂时忽略该限制。 set_…

渗透测试练习题解析 3(CTF web)

1、[网鼎杯 2020 朱雀组]phpweb 1 考点&#xff1a;反序列化漏洞利用 进入靶场&#xff0c;查看检查信息&#xff0c;发现存在两个参数 func 和 p 查看页面源代码 payload&#xff1a;funcfile_get_contents&pphp://filter/resourceindex.php 整理后&#xff0c;就是 PHP 代…

【Uniapp uni-app学习与快速上手——详细讲解】

Uniapp uni-app学习与快速上手——详细讲解 1. 介绍2. Uni-app 学习资源3. 快速上手4. 开始第一个项目5. 调试和发布 1. 介绍 Uni-app 是一个使用 Vue.js 编写多端应用的前端框架。开发者可以编写一份代码&#xff0c;然后发布到iOS、Android、网页&#xff08;响应式&#xf…

docker 的常用命令详解

Docker 是一个开源的应用容器引擎&#xff0c;它允许开发者打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。下面是 Docker 的常用命令…

Python json解析

在Python中解析JSON&#xff08;JavaScript Object Notation&#xff09;非常简单&#xff0c;标准库中的json模块提供了必要的功能。JSON是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。 以下是使用Python解析JSON的一些基本…

【STM32 CubeMX】HAL库的本质读写寄存器

文章目录 前言一、HAL库的本质1.1 HAL库的本质是操作寄存器1.2 自己实现HAL_GPIO_WritePin寄存器通过寄存器的操作点灯代码概况Port bit set/reset register寄存器 总结 前言 在嵌入式系统开发中&#xff0c;HAL&#xff08;Hardware Abstraction Layer&#xff09;库是一个重…

MongoDB聚合:$graphLookup

$graphLookup聚合阶段在一个集合中执行递归搜索&#xff0c;可以使用选项来控制递归搜索的深度和条件。 $graphLookup搜索过程总结如下&#xff1a; 输入文档进入$graphLookup聚合阶段。$graphLookup的搜索目标是from参数指定的集合&#xff08;搜索参数的完整列表见下文&…

Hive的排序——order by 、sort by、distribute by 、cluster by

Hive中的排序通常涉及到order by 、sort by、distribute by 、cluster by 一、语法 selectcolumn1,column2, ... from table [where 条件] [group by column] [order by column] [cluster by column| [distribute by column] [sort by column] [limit [offset,] rows]; …

计算机服务器中了mkp勒索病毒如何解密,mkp勒索病毒解密流程

随着网络技术的不断发展与应用&#xff0c;越来越多的企业走向数字化办公模式&#xff0c;计算机极大地方便了企业的正常生产运营&#xff0c;但网络威胁的手段也不断增加。近期&#xff0c;云天数据恢复接到很多企业的求助&#xff0c;企业的计算机服务器遭到了mkp勒索病毒攻击…

Linux_进程间通信

管道 System V 共享内存 System V IPC 接口介绍 由于进程地址空间的存在&#xff0c;所以进程间有具有独立性&#xff0c;一个进程看不到另一个进程的数据。那么如果我们想让进程间通信&#xff0c;就必须先让它们先看到同一份资源。常见的进程间通信的方法有管道&#xff0c;…

前端学习的笔记第二篇

vscode如何快速生成代码 ! Tab 效果&#xff1a; 解析&#xff1a; <!DOCTYPE html>: 指定当前html版本5。 <html lang"en">: lang > language&#xff0c;en > english。指定当前页面内容是英文的。 <meta charset"UTF-8">:…