数据结构与算法——1120——时间空间效率问题求边界值
目录
1、效率问题
1、时间复杂度
1、O(1)
2、O(n)
3、O(n²) 或O(n*log2n)——n倍的log以2为底n的对数
例题
4、O(n³)
2、空间复杂度
3、数组和链表
2、面试题之求边界值
题目
解答
(1)-i
(2)~i
(3)1-i
(4)-1-i
1、效率问题
效率问题与变化有关
效率排序:常对幂指阶
1、时间复杂度
定义:内存访问次数,或代码的总运行次数
1、O(1)
表示当前代码的时间消耗为常量,在有限可数的资源范围内可以完成
即:消耗的资源不受输入数据量n的影响
2、O(n)
表示一层循环
for(i=1;i<=n;i++)
{cout<<i<<endl;
}
3、O(n²) 或O(n*log2n)——n倍的log以2为底n的对数
表示两层嵌套问题
例题
1、O(n²)
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++){cout<<j<<endl;}
}
i=n时,代码从1-n执行了n次;i=2时,同样执行了n次;以此类推,一直到i=n时,共执行了n²次
2、O(n*log2n)
for(i=1;i<=n;i++)
{for(j=1;j<=n;j*2){cout<<j<<endl;}
}
1*2*2*2*......*2=n;即:2的k次方=n,k=log以2为底n的对数
4、O(n³)
表示三层嵌套问题
for(i=1;i<=n;i++)
{for(j=1;j<=n;j*2){for(k=1;k<=j;k++){cout<<k<<endl;}}
}
i=1时,时间复杂度为1;i=2时,为1+2;i=3时,1+2+3;i=4时;1+2+3+4......,则总时间复杂度为
≈n³
2、空间复杂度
空间复杂度:为了额外解决问题而额外消耗的空间
如果消耗的空间不随着输入数据量的变化而变化,则空间复杂度为O(1)
3、数组和链表
数组:类型相同(想要类型不同的,因此出现了结构体、类),空间连续,长度固定(增删难)
链表:增删快,但要付出查找的代价
2、面试题之求边界值
题目
在C语言中,存在int i=-2147483648,求-i,~i,1-i,-1-i
解答
首先明确边界值:
类型 | 位数 | 字节数 | 左边界 | 右边界 |
char | 8位 | 1字节 | -128 | 127 |
short | 16位 | 2字节 | -32768 | 32767 |
int | 32位 | 4字节 | -2147483648 | 2147483647 |
i和-i的补码值相同,均为10000000.00000000.00000000.00000000
由此可知,-2147483648为int型可表示的最小值,因此符号位取1,其余全0
-2147483648补码:10000000.00000000.00000000.00000000
(1)-i
-i补码算法:将i所有位取反+1
i | 10000000 | 00000000 | 00000000 | 00000000 |
取反 | 011111111 | 11111111 | 11111111 | 11111111 |
+1 | 10000000 | 00000000 | 00000000 | 00000000 |
因此-i仍为本身-2147483648
(2)~i
~i为全部取反,为01111111.11111111.11111111.11111111,为2147483647
i | 10000000 | 00000000 | 00000000 | 00000000 |
取反 | 011111111 | 11111111 | 11111111 | 11111111 |
(3)1-i
看作-i+1
-i | 10000000 | 00000000 | 00000000 | 00000000 |
1 | 00000000 | 00000000 | 00000000 | 00000001 |
-i+1 | 10000000 | 00000000 | 00000000 | 00000001 |
结果为2147483649,因为溢出,所以应为-2147483647
(4)-1-i
看作-i+(-1)
-i | 10000000 | 00000000 | 00000000 | 00000000 |
-1 | 11111111 | 11111111 | 11111111 | 11111111 |
-i+1 | 101111111 | 11111111 | 11111111 | 11111111 |
此时最前面的1溢出,因此结果为01111111.11111111.11111111.11111111,为2147483647
相关文章:
数据结构与算法——1120——时间空间效率问题求边界值
目录 1、效率问题 1、时间复杂度 1、O(1) 2、O(n) 3、O(n) 或O(n*log2n)——n倍的log以2为底n的对数 例题 4、O(n) 2、空间复杂度 3、数组和链表 2、面试题之求边界值 题目 解答 (1)-i (2)~i (3&#x…...
HTML通过JavaScript获取访问连接,IP和端口
<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Get IP Address</title> <script> function displayURL() { var url window.location.href; // 获取当…...
TCP vs UDP:如何选择适合的网络传输协议?
在网络通信中,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种非常重要的传输层协议。它们各有特点,适用于不同类型的应用场景。本文将详细探讨TCP和UDP协议的结构、优缺点及应用&…...
学习QT第二天
QT6示例运行 运行一个Widgets程序运行一个QT Quick示例 工作太忙了,难得抽空学点东西。-_-||| 博客中有错误的地方,请各位道友及时指正,感谢! 运行一个Widgets程序 在QT Creator的欢迎界面中,点击左侧的示例…...
递归算法专题一>Pow(x, n)
题目: 解析: 代码: public double myPow(double x, int n) {return n < 0 ? 1.0 / pow(x,-n) : pow(x,n); }private double pow(double x, int n){if(n 0) return 1.0;double tmp pow(x,n / 2);return n % 2 0 ? tmp * tmp : tmp …...
利用Python爬虫获取商品评论:技术与实践
在当今这个信息爆炸的时代,互联网上充斥着海量的数据。对于电商平台来说,用户评论是了解消费者喜好、优化产品策略的重要依据。Python作为一种强大的编程语言,其丰富的库支持使得爬虫技术成为获取这些数据的有效手段。本文将详细介绍如何使用…...
python之使用django框架开发web项目
本问将对django框架在python的web项目中的使用进行介绍,有不对之处,烦请指正。 首先使用创建一个django工程(本示例中使用pycharm2024+python3.12),名称和项目保存路径根据自己的需要自行修改,新手直接默认本机环境就好(关于conda将会另开一篇进行讲解。),最后点击cre…...
当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办
随着AI技术的飞速发展,3D数字人技术已成为驱动各行各业转型升级的重要力量。在这一背景下,2024山东3D数字人视频创作大赛应运而生,并在一番激烈的角逐后圆满落幕,为科技与创意的交融写下浓墨重彩的一笔。 11月20日,一…...
设计模式之策略模式
背景:导入功能需要做成根据编码code或者名称实现不同的导入逻辑,编码和名称都是可配置的,未知的变化,这里要写通用的导入、校验和具体的导入、校验。至此我想到采用设计模式之策略模式工厂模式实现此需求。若有不妥还望指正。 自…...
/etc/sudoers 文件格式解读
文章目录 例如 /etc/sudoers 文件中存在这样一行: ubuntu ALL(ALL:ALL) NOPASSWD: ALL 解释如下: 1. 第一个表示用户名,这意味着此行规则适用于名为 ubuntu 的用户。 2. 接下来等号左边的 ALL 表示允许从任何主机登录当前的用户账户…...
Linux虚拟机网络配置
Linux固定IP 跳转到 cd /etc/sysconfig/network-scripts/ 打开文件并编辑 vim ifcfg-ens33 增加或修改选中内容 重启网卡 systemctl restart network ifconfig -a 查看ip已固定 虚拟机网络编辑器调整 子网IP进行修改,例如本机IP修改为10.212.197.34 此处就修改…...
C++模版特化和偏特化
什么是模版特化 特化的含义:所谓特化,就是将泛型搞得具体化一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特定的修饰(例如const或…...
17. 指针类型和步长概念问题
1. 项目场景: ➣ Jack Qiao对米粒说:“今天有道友遇到一个问题,举个栗子数组 arr[5] { 0 };道友发现&arr[0] 1与&arr 1打印出来的地址竟然不同。”米粒测试后果然是这样。 2. 问题描述 ☑ 举个栗子:数组 arr[5] { 0…...
如何自动下载和更新冰狐智能辅助?
冰狐智能辅助的版本更新非常快,如果设备多的话每次手工更新会非常麻烦,现在分享一种免费的自动下载和安装冰狐智能辅助的方法。 一、安装迅雷浏览器 安装迅雷浏览器1.19.0.4280版本,浏览器用于打开冰狐的官网,以便于从官网下载a…...
C# 数据结构之【队列】C#队列
1. 描述 队列:队列遵循先进先出(FIFO)原则,在一端进行插入操作,在另一端进行删除操作。 2. 应用示例 using System;namespace DataStructure {class Program{static async Task Main(string[] args){// 创建一个队列…...
Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段
点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatisÿ…...
HTML+CSS网页模板,左侧导航,右侧内容,顶部LOGO
网页顶部是网站名称和LOGO,左侧是菜单导航,点击菜单,右侧显示内容。HTMLCSS代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"…...
Redis的基本使用命令(GET,SET,KEYS,EXISTS,DEL,EXPIRE,TTL,TYPE)
目录 SET GET KEYS EXISTS DEL EXPIRE TTL redis中的过期策略是怎么实现的(面试) 上文介绍reids的安装以及基本概念,本章节主要介绍 Redis的基本使用命令的使用 Redis 是一个基于键值对(KEY - VALUE)存储的…...
Spring AOP
目录 1.AOP概述 2.Spring AOP快速实现 3.Spring AOP核⼼概念 编辑 3.1切点(Pointcut) 3.2连接点(Join Point) 3.3通知(Advice) 3.4切⾯(Aspect) 4.通知类型 5.PointCut 6.切⾯优先级 Order 7.annotation 1.AOP概述 (1)什么是AOP…...
SIMD AVX2 向量计算
_mm256_fmadd_ps: 能够在单个操作中执行乘法和加法,从而提高浮点计算的精度和性能。_mm256_sub_ps : Intel Advanced Vector Extensions (AVX) 指令集中用于从两个 AVX 寄存器中逐元素进行单精度浮点数减法的内联函数。这个函数允许同时对 8 个单精度浮点数进行减法…...
clipboard
clipboard 现代复制到剪贴板。无闪光。只有 3kb 的 gzip 压缩。 安装 npm install clipboard --save第三方cdn提供商 <script src"https://cdn.jsdelivr.net/npm/clipboard2.0.11/dist/clipboard.min.js"></script>使用 data-clipboard-target"…...
【JavaEE进阶】 JavaScript
本节⽬标 了解什么是JavaScript, 学习JavaScript的常⻅操作, 以及使⽤JQuery完成简单的⻚⾯元素操作. 一. 初识 JavaScript 1.JavaScript 是什么 JavaScript (简称 JS), 是⼀个脚本语⾔, 解释型或即时编译型的编程语⾔. 虽然它是作为开发Web⻚⾯的脚本语⾔⽽出名,…...
python程序的编写以及发布(形象类比)
最近重新接触python,本人之前对于python的虚拟环境,安装包比较比较迷惑,这里给出一个具象的理解。可以将 Python 程序运行的过程类比成一次 做菜的过程,从准备食材到最后出锅。以下是具体的类比步骤: 1. 安装 Python 环…...
游戏引擎学习第20天
视频参考:https://www.bilibili.com/video/BV1VkBCYmExt 解释 off-by-one 错误 从演讲者的视角:对代码问题的剖析与修复过程 问题的起因 演讲者提到,他可能无意中在代码中造成了一个错误,这与“调试时间标记索引”有关。他发现了一个逻辑问题…...
大数据面试题每日练习--HDFS是如何工作的?
HDFS(Hadoop Distributed File System)是一个分布式文件系统,设计用于存储非常大的文件。它的主要工作原理如下: NameNode:管理文件系统的命名空间,维护文件目录树和文件元数据信息。NameNode记录每个文件…...
高质量 JavaScript
高质量的 JavaScript 非常重要。它能够提升代码的可读性,让其他开发者可以轻松理解代码意图,减少沟通成本和维护难度。同时,合理的代码结构和正确的语法运用能够避免许多潜在的错误和性能问题,例如通过正确处理异步操作来防止程序…...
小白投资理财 - 解读威廉分形指标 Williams Fractals
小白投资理财 - 解读威廉分形指标 Williams Fractals WF 指标WF 的使用止损支撑和阻力 WF 缺点WF 组合使用WF EMAWF 和趋势线 WF 周期设定总结 你有看过这种情况吗?它能够准确的让你知道高点和低点,而且每次都能够完美的预测到反转的信号,其…...
五天SpringCloud计划——DAY2之使用Docker完成项目的部署
一、引言 刚刚学完了Docker的使用,现在知识在脑子里面还是热乎的,是时候把它总结一下了。 现在的我认为Docker时一个部署项目的工具(不知道是不是真的),相比于我以前使用宝塔面板部署项目,使用Docker更能让我看到代码之美,怎么一…...
HarmonyOS4+NEXT星河版入门与项目实战(11)------Button组件
文章目录 1、控件图解2、案例实现1、代码实现2、代码解释3、运行效果4、总结1、控件图解 这里我们用一张完整的图来汇整 Button 的用法格式、属性和事件,如下所示: 按钮默认类型就是胶囊类型。 2、案例实现 这里我们实现一个根据放大和缩小按钮来改变图片大小的功能。 功…...
oracle的静态注册和动态注册
oracle的静态注册和动态注册 静态注册: 静态注册 : 指将实例的相关信息手动告知 listener 侦 听 器 , 可以使用netmgr,netca,oem 以及直接 vi listener.ora 文件来实现静态注册,在动态注册不稳定时使用,特点是:稳定&…...
【系统架构设计师】真题论文: 论软件可靠性设计技术的应用(包括解题思路和素材)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2013年 试题3)解题思路论文素材参考软件可靠性设计技术概念主要的软件可靠性设计技术软件可靠性设计技术的应用流程真题题目(2013年 试题3) 随着软件的日益普及,系统中软件成分不断增加,使得系统对…...
网络运输层之(1)TCP连接管理
网络运输层之(1)TCP连接管理 Author: Once Day Date: 2024年10月22日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客…...
基于阿里云服务器部署静态的website
目录 一:创建服务器实例并connect 二:本地文件和服务器share 三:关于IIS服务器的安装预配置 四:设置安全组 五:建站流程 六:关于备案 一:创建服务器实例并connect 创建好的服务器实例在云…...
Git项目管理
Git项目管理 分区概念:创建本地仓库查看当前仓库的状态工作区添加到暂存区暂存区恢复到工作区工作区提交到本地仓库查看提交日志版本回滚查看版本变更的所有记录分支查看分支创建分支删除分支切换分支合并分支 冲突解决HEAD指针分支使用的一般规范masterdevelopfeat…...
实践指南:EdgeOne与HAI的梦幻联动
在当今快速发展的数字时代,安全和速度已成为网络服务的基石。EdgeOne,作为腾讯云提供的边缘安全加速平台,以其全球部署的节点和强大的安全防护功能,为用户提供了稳定而高效的网络体验。而HAI(HyperApplicationInventor…...
OmniDiskSweeper :一款专为 macOS 设计的磁盘使用分析工具
OmniDiskSweeper 是一款专为 macOS 设计的磁盘使用分析工具,由 The Omni Group 开发。它的主要目的是帮助用户可视化磁盘上的文件和文件夹,并找出占用大量空间的文件,从而帮助用户释放磁盘空间。 OmniDiskSweeper 的特点包括: 简…...
【Git】:Git基本操作
目录 创建、配置本地仓库 创建本地仓库 配置本地仓库 认识工作区、暂存区、版本库 修改文件 版本回退 撤销修改 删除文件 创建、配置本地仓库 创建本地仓库 我们通常可以通过以下两种方式之一获取 Git 存储库: 自己在本地目录创建一个本地仓库 从其它服务…...
C++设计模式:建造者模式(Builder) 房屋建造案例
什么是建造者模式? 建造者模式是一种创建型设计模式,它用于一步步地构建一个复杂对象,同时将对象的构建过程与它的表示分离开。简单来说: 它将复杂对象的“建造步骤”分成多部分,让我们可以灵活地控制这些步骤。通过…...
由于centos停更,yum、docker等不支持,采用阿里云仓库搭建K8S
一:准备 服务器信息主机名IP地址Centos7.9node1-master192.168.35.130Centos7.9node2192.168.35.131 # 查看系统版本 cat /etc/centos-release # 查看内核版本 uname -sr二:服务器前置操作 每个节点都需要操作 #使用 hostnamectl set-hostname设置主机…...
cocos creator 3.8 一些简单的操作技巧,材质的创建 1
这是一个飞机的3D模型与贴图 导入到cocos中,法线模型文件中已经包含了mesh、material、prefab,也就是模型、材质与预制。界面上创建一个空节点Plane,将模型直接拖入到Plane下。新建材质如图下 Effect属性选择builtin-unlit,不需…...
下载安装Android Studio
(一)Android Studio下载地址 https://developer.android.google.cn/studio 滑动到 点击下载文档 打开新网页 切换到english 
随着人口老龄化进程的加速,摔倒事故逐渐成为威胁老年人健康和安全的主要问题之一。研究表明,摔倒不仅可能导致老年人骨折、头部受伤等严重的身体损伤,还可能引发心理恐惧和行动能力下降,从而降低其生活质量和独立性。如何快速、准…...
C++特殊类设计(不能被拷贝的类、只能在堆上创建对象的类、不能被继承的类、单例模式)
C特殊类设计 在实际应用中,可能需要设计一些特殊的类对象,如不能被拷贝的类、只能在堆上创建对象的类、只能在栈上创建对象的类、不能被继承的类、只能创建一个对象的类(单例模式)。 1. 不能被拷贝的类 拷贝只会发生在两个场景…...
Javaweb前端HTML css 整体布局
最后一个是线条颜色 盒子,整体还是300,400...
数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall
数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 贵在坚持! 数据样例项目地址: * 相关项目 1)数据集…...
【从零开始的LeetCode-算法】3297. 统计重新排列后包含另一个字符串的子字符串数目 I
给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新排列后,word2 是重排字符串的 前缀,那么我们称字符串 x 是 合法的 。 请你返回 word1 中 合法 子字符串的数目。 示例 1: 输入:word1 "bcca", word2 "…...
【Redis_Day5】String类型
【Redis_Day5】String类型 String操作String的命令set和get:设置、获取键值对mset和mget:批量设置、获取键值对setnx/setex/psetexincr和incrby:对字符串进行加操作decr/decrby:对字符串进行减操作incrbyfloat:浮点数加…...
【CVE-2024-48694】OfficeWeb365 SaveDraw
漏洞描述 OfficeWeb365 v.8.6.1.0和v7.18.23.0中的文件上传漏洞允许远程攻击者通过pw/savedraw组件执行任意代码。 影响版本: V8.6.1.0; V7.18.23.0 网络测绘 “OfficeWeb365” 漏洞信息 POST /PW/SaveDraw?path../../Content/img&idx6.ashx H…...