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

news2024/11/18 22:46:44

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.coloradmin.cn/o/1150217.html

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

相关文章

②CPU - 运算器、控制器 【软考-软件设计师考点】

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ ②CPU - 运算器、控制器 【软考-软件设计师考点…

基于python的app程式开发

安装的库文件&#xff1a; 运行代码&#xff1a; # -*- coding:utf-8 -*- from kivy.app import App class HelloApp(App):pass if __name__ __main__:HelloApp().run() 结果画面&#xff1a;

PTA 病毒溯源(树)

题目 病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株&#xff0c;而这些变异的病毒又可能被诱发突变产生第二代变异&#xff0c;如此继续不断变化。 现给定一些病毒之间的变异关系&#xff0c;要求你找出其中最长的一条变异链。 在此假设给出的变异都是由突变引起…

数据分类保护敏感数据

数据分类是一个过程&#xff0c;用于发现敏感内容&#xff0c;并对关键数据进行分组&#xff0c;以便进一步配置 DLP。数据分类过程分析组织的数据存储库&#xff0c;以便根据文件的内容和上下文有效地将文件分类为不同的类别&#xff0c;并协助配置适当的安全控制级别以符合数…

leetcode:1207. 独一无二的出现次数(python3解法)

难度&#xff1a;简单 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;arr [1,2,2,1,1,3] 输出&#xff1a;true 解释&…

一站式解决安全问题

端玛科技致力于攻克困难的应用软件安全问题&#xff0c;我们的解决方案以安全标准、安全教育和安全风险评估三大支柱为安全SDLC的基础&#xff0c;这三大支柱相互依存&#xff0c;创建了一个可重复的、安全的软件开发生态系统。 主要业务范围&#xff1a;关注整个软件开发过程…

WebRTC介绍

什么是WebRTC WebRTC&#xff08;Web Real-Time Communications&#xff09;是一项实时通讯技术&#xff0c;它允许网络应用或者站点&#xff0c;在不借助中间媒介的情况下&#xff0c;建立浏览器之间点对点&#xff08;Peer-to-Peer&#xff09;的连接&#xff0c;实现视频流…

react实现列表增删改查的小demo(class组件版)

前言 react的语法上就是比vue麻烦不少,既然要开手动挡,那就开吧,一个基础的demo 效果图 列表 新增弹窗 编辑弹框 新增一条数据后的效果 代码 根组件 index.jsx import React, { Component,createRef} from react import withRouter from ../../utils/withRouter import G…

什么是同步通信?什么是异步通信?两者的优缺点是什么?

什么是通信&#xff1f; 通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。从广义上来说&#xff0c;通信是指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质&#xff0c;将信息从某方准确安全地传送到另方。在出现电波传递通信…

Element-UI el-row 排版样式错乱

Element-UI el-row el-col 配合el-form 表单使用&#xff0c;造成样式的错乱。 如图&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/13520a35e3d44e4099b5bc04d5201f29.png#pic_center 大概就是这个&#xff0c;代码&#xff1a; <el-row gutter"…

coturn服务器的搭建

Window下搭建coturn服务器&#xff1a; 准备材料&#xff1a; 1、安装Cygwin&#xff0c;地址&#xff1a;https://cygwin.com/install.html 由于Window无法直接部署coturn&#xff0c;因此需要下载安装Cygwin在Window上部署Linux虚拟环境。 在安装的时候需要安装几下packe…

vue实现记事本(无样式版)

实现了增、删功能&#xff0c;任务统计&#xff0c;全删除功能。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

【达梦数据库】DM概述、数据定义(表空间管理、用户管理、模式管理、表管理)

文章目录 DM概述数据定义表空间管理1. 创建表空间2. 修改表空间3. 删除表空间 用户管理1. 创建用户2. 修改用户3. 删除用户 模式管理1. 创建模式(2种方法)2. 设置当前模式3. 删除模式 表管理1. 创建表2. 修改表3. 删除表 文章有点点长&#xff0c;可以先收藏哦&#xff0c;如果…

ECCV 22丨BUTD-DETR:图像和点云的语言标定Transformer

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2112.08879[1] 主页链接&#xff1a;https://github.com/nickgkan/butd\_detr[2] 摘要&#xff1a; 在二维和三维场景中&#xff0c;大多数模型的任务都是将指涉…

Kafka生产问题总结及性能优化实践

Kafka可视化管理工具kafka-manager 安装及基本使用可参考&#xff1a;https://www.cnblogs.com/dadonggg/p/8205302.html 线上环境规划 JVM参数设置 kafka是scala语言开发&#xff0c;运行在JVM上&#xff0c;需要对JVM参数合理设置&#xff0c;参看JVM调优专题 修改bin/kaf…

算法通关村第十二关黄金挑战——最长公共前缀问题解析

大家好&#xff0c;我是怒码少年小码。 最长公共前缀 LeetCode 14&#xff1a;编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”]输出&#xff…

CSS+Javascript+Html日历控件

最近&#xff0c;因需要用HTMLJAVASCRIPTCSS实现了一个日历控件&#xff0c;效果如下&#xff1a; 单击上月、下月进行日历切换。当前日期在日历中变颜色标注显示。还是老老套路、老方法&#xff0c;分HMLCSSJAVASCRIPT三部分代码。 一、html代码 <h1>学习计划</h1…

HubSpot CRM是什么?如何添加、使用呢?

HubSpot CRM是一款强大的客户关系管理工具&#xff0c;它不仅简化了销售和市场营销过程&#xff0c;还提供了多种功能&#xff0c;有助于增强客户互动、提高销售效率和提供更多的洞察信息。 今天运营坛将带领大家深入了解HubSpot CRM&#xff0c;涵盖了它的定义、使用流程、添…

国产芯片vs“国际水平”,有距离也有超越!

当前&#xff0c;国产芯片正在迎来全新的发展阶段。国产终端芯片性能怎么样&#xff0c;与国际主流产品相比&#xff0c;表现如何&#xff1f;今天笔者就针对目前热度较高的四款国产CPU进行参数分析与性能跑分横向对比。 此次国产芯片评测型号分别是海光C86-3250、龙芯3A5000H…

java蓝桥11-20题总结

文章目录 11.排序1.代码2.知识点冒泡排序 12.跑步锻炼1.代码 13.蛇形填数1.代码 14.递增序列1.代码 15.AB&#xff08;OJ示例题目&#xff09;16.杨辉三角形1.代码2.知识点 17.货物1.代码 18.九进制转十进制1.代码 19.等差素数列1.代码 20.七段码 11.排序 1.代码 package lanq…