学习数据结构和算法的第6天

时间复杂度和空间复杂度相关练习题

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在**O(n)**时间内完成吗?
示例1:

输入:[30,1]
输出:2

示例2:

输入:[9,6,4,2,3,5,7,0,1]
输出:8

一道题有多种方法,那么我们不用实现,只需要分析出每种方法的时间复杂度,选择复杂度为优的方法即可,这就是复杂度实际中的意义

思路一:

​ 排序-》qsort快排->时间复杂度O(n*log2(N))

思路二:

​ (0+1+2+3+4+5+····+n)-(a[0]+a[1]+a[2]+a[3]+···+a[n-1])

​ 时间复杂度O(N) 空间复杂度O(1)

1、等差数列前你项和公式

2、循环加没个值

思路三:

​ 数组中值是几就在第几个位置写下这个值

0 1 2 n

时间复杂度O(N) 空间复杂度O(N)

思路四:

​ 给一个值x=0

​ x先跟[0,n]的所有值异或

​ x在跟数组中每个值异或 最后x就是缺的那个数字

eg:x先与[0,9]进行异或,在与数组内的[9,4,5,7,6,1,2,3,0]进行异或,1进行异或时8只出现了一次,而其他数出现了两次。

时间复杂度O(N)

**异或:**相同为0,相异为1

#include <stdio.h>int missingNumber(int*nums,int numsSize)
{int x=0;//跟[0,n]进行异或for(int i=0;i<=numsSize;++i){x ^=i;}//在跟数组中值进行异或for(int i=0;i<numsSize;++i){x ^=nums[i];}return x;
}

给定一个数组,将数组中的元素向右移动k个位置,其中 k 是非负数。
进阶:
•尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
·你可以使用空间复杂度为(1)的原地算法解决这个问题吗?
示例1:

输入: nums =[1,2,3,4,5,6,7],k=3
输出:[56,71,2,3,4]
解释:
向右旋转1步:[7,1,2,3,4,56]

思路一:

​ 暴力求解 旋转k次

​ 时间复杂度:O(N*K) 空间复杂度:O(1)

思路二:

​ 开辟额外空间,以空间换时间

输入:nums=[1,2,3,4,5,6,7],k=3

tmp 5,6,7 1,2,3,4

输出:5,6,71,2,3,4

时间复杂度:O(N) 空间复杂度:O(N)

思路三:

输入: nums =[1,2,3,4,5,6,7],k=3
输出:[56,71,2,3,4]

4 3 2 1 5 6 7 前n-k个逆置

4 3 2 1 7 6 5后k个逆置

5 6 7 1 2 3 4整体逆置

时间复杂度:O(N) 空间复杂度:O(1)

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

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

相关文章

【设计模式】23中设计模式笔记

设计模式分类 模板方法模式 核心就是设计一个部分抽象类。 这个类具有少量具体的方法&#xff0c;和大量抽象的方法&#xff0c;具体的方法是为外界提供服务的点&#xff0c;具体方法中定义了抽象方法的执行序列 装饰器模式 现在有一个对象A&#xff0c;希望A的a方法被修饰 …

一、基础算法之排序、二分、高精度、前缀和与差分、双指针算法、位运算、离散化、区间合并内容。

1.快速排序 算法思想&#xff1a;选择基准元素&#xff0c;比基准元素小的放左边&#xff0c;比基准元素大的放右边。每趟至少一个元素排好。 每一趟实现步骤&#xff1a; low>high&#xff0c;返回&#xff0c;排序完成选取基准元素xa[low],ilow,jhigh当i<j时&#x…

ZOJ 3537 Cake 【区间DP + 凸多边形三角剖分】

Cake 题意 给定平面坐标上的 n n n 个点&#xff0c;如果是凸多边形的话&#xff0c;就用最少的花费把这个多边形剖分成若干个三角形&#xff0c;剖分的线段端点只能是原多边形的顶点&#xff0c;一条线段的花费为&#xff1a; ∣ x i x j ∣ ∣ y i y j ∣ m o d p |x_i…

lua:有关表访问的metamethod

针对在两种正常状态&#xff1a;表的不存在的域的查询和修改&#xff0c;Lua也提供了改变 tables的行为的方法。 index metamethod 我们可以通过index元方法来实现访问table内部不存在的域时人为操控返回数据。 比如以下测试代码&#xff1a; local set {1,2,3} setmetata…

部署一个在线OCR工具

效果 安装 1.拉取镜像 # 从 dockerhub pull docker pull mmmz/trwebocr:latest 2.运行容器 # 运行镜像 docker run -itd --rm -p 10058:8089 --name trwebocr mmmz/trwebocr:latest 使用 打开浏览器输入 http://192.168.168.110:10058/ 愉快滴使用吧

重学 VUE —— 一、创建一个应用

应用实例 每个 Vue 应用都是通过 createApp 函数创建一个新的 应用实例&#xff1a; import { createApp } from vueconst app createApp({/* 根组件选项 */ })根组件 我们传入 createApp 的对象实际上是一个组件&#xff0c;每个应用都需要一个“根组件”&#xff0c;其他…

亚马逊认证考试系列 - 知识点 - LightSail介绍

一、引言 在当今云计算的时代&#xff0c;亚马逊网络服务&#xff08;AWS&#xff09;已成为业界领先的云服务提供商。其中&#xff0c;LightSail服务是AWS为简化云计算的入门和使用而推出的一项服务。它特别适合那些想要快速搭建网站、开发环境或小型应用的用户。通过LightSa…

87.Go Redis实现可重入、自动续期分布式锁

在 86.分布式锁理论分析 中我们介绍了分布式锁的原理、"坑"以及解决办法。本文就给一下代码示例&#xff1a; 一、Redis实现分布式锁 package mainimport ("fmt""github.com/go-redis/redis""time" )var client redis.NewClient(&a…

Android Graphics 图像显示系统 - 开篇

“ 随着学习的不断深入和工作经验的积累&#xff0c;欲将之前在博客中整理的Android Graphics知识做进一步整理&#xff0c;并纠正一些理解上的错误&#xff0c;故开设Graphics主题系列文章 ” 序言 由于工作需要&#xff0c;也源于个人兴趣&#xff0c;终于下决心花时间整理一…

网络请求库axios

一、认识Axios库 为什么选择axios? 功能特点: 在浏览器中发送 XMLHttpRequests 请求在 node.js 中发送 http请求支持 Promise API拦截请求和响应转换请求和响应数据 补充: axios名称的由来? 个人理解没有具体的翻译. axios: ajax i/o system 二、axios发送请求 1.axios请求…

【开源】SpringBoot框架开发大病保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统配置维护2.2 系统参保管理2.3 大病保险管理2.4 大病登记管理2.5 保险审核管理 三、系统详细设计3.1 系统整体配置功能设计3.2 大病人员模块设计3.3 大病保险模块设计3.4 大病登记模块设计3.5 保险审核模块设计 四、…

2024 年 5 款适用于免费 iPhone 数据恢复的工具软件

搜索一下&#xff0c;你会发现许多付费或免费的iPhone数据恢复工具声称它们可以帮助你以很高的成功率找回所有丢失的数据。然而&#xff0c;这正是问题所在。真的很难做出选择。为了进一步帮助您解决数据丢失问题&#xff0c;我们在此列出了 5 款最好的免费 iPhone 恢复软件供您…

滑块识别验证

滑块识别 1. 获取图片 测试网站&#xff1a;https://www.geetest.com/adaptive-captcha-demo 2. 点击滑块拼图并开始验证 # 1.打开首页 driver.get(https://www.geetest.com/adaptive-captcha-demo)# 2.点击【滑动拼图验证】 tag WebDriverWait(driver, 30, 0.5).until(la…

Python API的使用简述

文章目录 Web APIGit 和 GitHub使用 API 调用请求数据安装 requests处理响应 API处理响应字典监视API的速率限制使用 Pygal 可视化仓库改进Pygal图表添加自定义工具提示 本篇文章&#xff1a;我们叙述如何编写一个独立的程序&#xff0c;并对其获取的数据进行可视化。这个程序将…

Python进阶:标准库

目录 一、前言 二、正文 1. Python 标准库的重要性 2. 常用标准库模块 a. os 模块

Eclipse导入maven项目或者创建maven项目时,报错Could not calculate build plan: Plugin

问题&#xff1a;Eclipse导入maven项目或者创建maven项目时,报错Could not calculate build plan: Plugin 1.上述问题大概是项目不能加载此maven插件&#xff0c;在pom文件中添加依赖项 <dependency><groupId>org.apache.maven.plugins</groupId><artifa…

编程相关的经典的网站和书籍

经典网站&#xff1a; Stack Overflow&#xff1a;作为全球最大的程序员问答社区&#xff0c;Stack Overflow 汇聚了大量的编程问题和解答&#xff0c;为程序员提供了极大的帮助。GitHub&#xff1a;全球最大的开源代码托管平台&#xff0c;程序员可以在上面共享自己的项目代码…

二级建造师试题答案?学生党都在用的6款搜题工具来了 #学习方法#学习方法#微信

作为大学生&#xff0c;我们应该善于利用各种学习工具&#xff0c;提高学习效率和质量。 1.灵兔搜题 这是一个公众号 包含大学网课、课后教材、选修课、mooc慕课及各类职业资格证、学历提升考试、公务员考试等常见题库。 下方附上一些测试的试题及答案 1、Uri主要由三部分组…

Python实战:用Python程序实现春晚刘谦魔术

刘谦春晚魔术是一个让人叹为观止的魔术表演&#xff0c;其中涉及到了数学、编程和创意的结合。看了春晚魔术的朋友们&#xff0c;是不是好奇春晚刘谦的魔术是怎么变的。 在这篇文章中&#xff0c;我们将通过 Python 程序实现春晚刘谦魔术&#xff0c;让读者对这个魔术有更深入…

【GAMES101】Lecture 20 光场

目录 光场&#xff08;Light Field / Lumigraph&#xff09; 广场照相机 光场&#xff08;Light Field / Lumigraph&#xff09; 我们在三维的世界中从一个观测点出发看到这么一幅二维的画面 如果有这么一副画布可以完美的显示出从观察点看到的画面&#xff0c;那用这幅画布…