LeetCode | 17.04.消失的数字和189.旋转数组

LeetCode | 17.04.消失的数字和189.旋转数组

文章目录

  • LeetCode | 17.04.消失的数字和189.旋转数组
  • 17.04.消失的数字
    • 方法一:
    • 方法二:
    • 方法三:
      • 方法二的代码
      • 方法三的代码
  • 189.旋转数组
    • 思路一
    • 思路二
    • 思路三

17.04.消失的数字

OJ链接

  • 这里题目要求在时间复杂度上O(n)我们介绍三种方法,看看哪种方法适合这道题~~

在这里插入图片描述


方法一:

  1. 先冒泡排序
  2. 遍历,当前值+1,不等于下一个数

这个时间复杂度是O(N^2)


方法二:

  1. 将数组的每个元素异或0
  2. 遍历,再将异或出来的结果每个再异或

这个时间复杂度是O(N)


方法三:

  1. 0到n等差数列公式计算和((首项 + 尾项) * 项数)/2
  2. 依次减掉数据中的值,剩下的就是消失的数字

这个时间复杂度是O(N)


  • 可见只有方法二和方法三符合题目要求,下面我们就写一下这个代码

方法二的代码

int missingNumber(int* nums, int numsSize){int N = numsSize;int sum = ((0+N)*(N+1))/2;for(int i= 0;i<numsSize;i++){sum-=nums[i];}return sum;
}

方法三的代码

int missingNumber(int* nums, int numsSize){int x = 0;for(int i = 0;i<numsSize;i++){x^=nums[i];}for(int i = 0;i<=numsSize;i++){x^=i;}return x;
}

189.旋转数组

OJ链接

在这里插入图片描述

  • 我们这个题肯有些同学在C语言的时候做过

思路一

我们先来看思路一:

在这里插入图片描述

  • 思路一的时间复杂度是多少?
    • 可能有的同学算出来的是O(N*K),不完全正确~~
  • 最好的情况:k % N = 0,k = 7,旋转0次!!!是O(1)。k是N的倍数时,不需要旋转~~
  • 最坏的情况:k % N = N - 1时,比如13次旋转的最多,20次最多…
  • 所以这个题的真正复杂度是O(N*(N-1))—>O(N^2)

那么我们要求时间复杂度是O(N),那么我们怎么优化呢?


思路二

我们这里就要看思路二:

在这里插入图片描述

  • 这里很明显是O(N)

代码如下:

void reverse(int* nums,int left,int right){while(left<right){int tmp = nums[left];nums[left] = nums[right];nums[right] = tmp;left++;right--;}
}
void rotate(int* nums, int numsSize, int k){if(k>numsSize){k %=numsSize;}reverse(nums,0,numsSize-1);reverse(nums,0,k-1);reverse(nums,k,numsSize-1);
}
  • 注意这里k一定要%numsSize,否则会报错~~

思路三

空间换时间

在这里插入图片描述

  • 这里的时间复杂是O(N),空间复杂度是O(N)

代码如下:

void rotate(int* nums, int numsSize, int k) {k %= numsSize;int tmp[numsSize];int j = k;//拷贝前n-k个for (int i = 0; i < numsSize - k; i++) {tmp[j++] = nums[i];}//拷贝后k个j = 0;for (int i = numsSize - k; i < numsSize; i++) {tmp[j++] = nums[i];}//拷贝回原数组for (int i = 0; i < numsSize; i++) {nums[i] = tmp[i];}
}

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

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

相关文章

10、电路综合-基于简化实频的宽带匹配电路设计方法

10、电路综合-基于简化实频的宽带匹配电路设计方法 网络综合和简化实频理论学习概述中的1-9介绍了SRFT的一些基本概念和实验方法&#xff0c;终于走到了SRFT的另一个究极用途&#xff0c;宽带匹配电路的设计。 1、之前的一些回顾与总结 之前也给出了一些电路综合的案例&…

实时定位和配送追踪:开发万岳同城外卖APP的关键技术特性

随着生活节奏的不断加快&#xff0c;外卖服务已经成为许多人日常生活中不可或缺的一部分。无论是工作日的午餐&#xff0c;还是周末的家庭聚会&#xff0c;外卖APP已经成为满足各种美食需求的首选方式。然而&#xff0c;同城外卖APP的成功不仅仅取决于美味的食物选择&#xff0…

leetCode 2578. 最小和分割 + 排序 + 贪心 + 奇偶分组(构造最优解)

2578. 最小和分割 - 力扣&#xff08;LeetCode&#xff09; 给你一个正整数 num &#xff0c;请你将它分割成两个非负整数 num1 和 num2 &#xff0c;满足&#xff1a; num1 和 num2 直接连起来&#xff0c;得到 num 各数位的一个排列。 换句话说&#xff0c;num1 和 num2 中所…

【零基础抓包】Fiddler超详细教学(一)

​Fiddler 1、什么是 Fiddler? Fiddler 是一个 HTTP 协议调试代理工具&#xff0c;它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析&#xff1b;可以设置断点调试、截取…

【脑机接口 论文】利用脑机接口帮助ALS患者恢复对家用设备的控制science

英文题目 中文题目 稳定的语音BCI解码使ALS患者在3个月内无需重新校准即可进行控制论文下载&#xff1a;算法程序下载&#xff1a;摘要1 项目介绍2 方法2.1实时神经解码2.2算法手术植入:神经解码模型: 数据收集实验2.3稳定的解码器性能超过三个月 3 电极的贡献4 讨论5结论 中文…

python 打印与去除不可见字符 \x00

# 此处不是真实的\x00 被 空格替换了 text "boot_1__normal/ " print(text.strip()"boot_1__normal/") # 打印不可见字符 print(repr(text))>>> False boot_1__normal/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0…

Python爬虫程序中的504错误:原因、常见场景和解决方法

概述 在编写Python爬虫程序时&#xff0c;我们经常会遇到各种错误和异常。其中&#xff0c;504错误是一种常见的网络错误&#xff0c;它表示网关超时。是指客户端与服务器之间的网关通信过程中&#xff0c;服务器在规定的时间内没有返回响应&#xff0c;导致请求超时。此类错误…

Windows键 + Shift + S 截图图片保存位置

地址 C:\Users\Administrator\AppData\Local\Packages\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\TempState\ScreenClip

reactos 可调试光盘映像

链接&#xff1a;https://pan.baidu.com/s/13M9BZN4IDrWLc3bjnHO79g?pwd0gst 提取码&#xff1a;0gst

多点开花。泛癌+单细胞+免疫+实验,一套组合拳教你拿下11+

今天给同学们分享一篇生信文章“A pan-cancer analysis shows immunoevasive characteristics in NRF2 hyperactive squamous malignancies”&#xff0c;这篇文章于2023年2月27日发表在Redox Biol期刊上&#xff0c;影响因子为11.4。 NRF2通路在各种癌症类型中经常被激活&…

FlinkCDC系列:通过skipped.operations参数选择性处理新增、更新、删除数据

在flinkCDC源数据配置&#xff0c;通过debezium.skipped.operations参数控制&#xff0c;配置需要过滤的 oplog 操作。操作包括 c 表示插入&#xff0c;u 表示更新&#xff0c;d 表示删除。默认情况下&#xff0c;不跳过任何操作&#xff0c;以逗号分隔。配置多个操作&#xff…

【23真题】邮电之首!扩招15倍!专业课难度骤降!

今天分享的是23年北京邮电大学804的信号与系统试题及解析。 本套试卷难度分析&#xff1a;北邮804在22年只招生6人&#xff0c;23年拟招生87人&#xff0c;扩招近15倍&#xff01;22年北京邮电大学804考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自…

4.2 SSAO算法 屏幕空间环境光遮蔽

一、SSAO介绍 AO 环境光遮蔽&#xff0c;全程Ambient Occlustion&#xff0c;是计算机图形学中的一种着色和渲染技术&#xff0c;模拟光线到达物体能力的粗略的全局方法&#xff0c;描述光线到达物体表面的能力。 SSAO 屏幕空间环境光遮蔽&#xff0c;全程 Screen Space Amb…

20.2 OpenSSL 非对称RSA加解密算法

RSA算法是一种非对称加密算法&#xff0c;由三位数学家Rivest、Shamir和Adleman共同发明&#xff0c;以他们三人的名字首字母命名。RSA算法的安全性基于大数分解问题&#xff0c;即对于一个非常大的合数&#xff0c;将其分解为两个质数的乘积是非常困难的。 RSA算法是一种常用…

我的架构复盘

1、背景 我目前公司研发中心担任软件研发负责人&#xff0c;研发中心分为3组&#xff0c;总共有30多人。研发中心主要开发各类生产辅助工具&#xff0c;比如巡检、安全教育等系统。系统不对外&#xff0c;只在公司内部使用。 就我个人来说&#xff0c;作为研发负责人&#xf…

【C语言_题库】C语言:编写一个程序,输入一组字符串,将字符串中的小写字母转换为大写字母,其它字符不变,并输出。

把键盘输入的一行字符串的小写字母转换成大写字母,其余字符不变,进行输出,直到遇到回车为止。 具体说明 【问题描述】 从键盘输入一行英文字符串,把所有小写字母变成大写字母,其他字母和字符保持不变。 【输入形式】 输入一行字符串,含大小写。 【输出形式】 输出大写字…

考试成绩这样分发

老师们&#xff0c;还在为每次繁琐的成绩查询而头痛&#xff1f;今天我就要给大家带来一个超级实用的教程&#xff0c;让你轻松解决这个问题&#xff01; 我来介绍一下这个神秘的“成绩查询页面”。别以为它很复杂&#xff0c;其实它就是一个简单的网页&#xff0c;上面会有每个…

详解—数据结构《树和二叉树》

目录 一.树概念及结构 1.1树的概念 1.2树的表示 二.二叉树的概念及结构 2.1概念 2.2二叉树的特点 2.3现实中的二叉树 2.4数据结构中的二叉树 2.5 特殊的二叉树 2.6二叉树的存储结构 2.6.1二叉树的性质 2.6.2 顺序结构 2.6.3链式存储 三. 二叉树的链式结构的遍历 …

美术培训服务预约小程序的作用是什么

线下培训教育机构很多&#xff0c;涉及到的行业及种类很多&#xff0c;美术培训就是其中较为重要的一类&#xff0c;尤其是青少年群体&#xff0c;其拓展度很深&#xff0c;而对商家来说&#xff0c;其主要生源在本地同城&#xff0c;因此品牌宣传和渠道发展、学员赋能很重要。…

AI虚拟主播源码系统 搭建专属自己的直播间+送礼物 功能强大 带完整搭建教程

在互联网的不断发展下&#xff0c;直播行业迅速崛起&#xff0c;成为一种新的信息传播和娱乐形式。越来越多的人开始通过直播平台进行交流、互动和分享。因此&#xff0c;开发一款能够提供高质量、稳定直播服务的平台具有重要的现实意义。 随着人工智能技术的不断进步&#xf…