自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 LeetCode 21. 合并两个有序链表

以上代码中在插入 l1 和 l2 的时候分链表为空和不为空的代码十分冗余,可以先通过malloc 为链表分配一个哨兵位就可以解决这个问题,最后再将哨兵位给释放掉即可。新链表是通过拼接给定的两个链表的所有节点组成的。题目描述:将两个升序链表合并为一个新的。

2025-07-08 17:19:33 206

原创 C++--AVL树

在前面学习二叉搜索树时提到,二叉搜索树的查找效率为 O(N),因为当数据有序或接近有序时,构建出来的二叉搜索树是单分支或接近单分支的结构,此时树的高度接近 n,所以最坏情况下二叉搜索树的查找效率为 O(N)。为了应对上面这种情况,两位俄罗斯的数学家 G.M.Adelson-Velskii 和 E.M.Landis 在1962年提出了一种解决办法,当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1 (需要对树中的结点进行调整来实现),即可降低树的高度,从而减少平均搜索长度。

2025-07-08 17:18:15 553

原创 LeetCode 面试题 02.02. 返回倒数第 k 个节点

题目描述:实现一种算法,找出单向链表中倒数第 k 个节点。

2025-07-07 20:11:11 162

原创 C++--map和set的使用

set 是按照一定次序存储元素的容器,其底层是一棵平衡二叉搜索树 (红黑树),由于二叉搜索树的每个节点的值满足左孩子 < 根 < 右孩子,并且二叉搜索树中没有重复的节点,所以 set 可以用来排序、去重和查找,同时由于这是一棵平衡树,所以 set 查找的时间复杂度为 O(logN),效率非常高。同时,set 是一种 key 模型 的容器,也就是说,set 中只有键值 key,而没有对应的 value,并且每个 key 都是唯一的。

2025-07-07 20:09:53 950

原创 LeetCode 876. 链表的中间结点

当你遇到一个链表问题时,可以问自己以下几个问题来判断是否适用快慢指针:我是不是在寻找一个特殊位置的节点,而不是特定值的节点?这个问题能否通过两个指针的“追及”或“相对距离”来解决?我能否通过让一个指针比另一个走得快,或者先走几步,来创造出解决问题的有利条件?如果答案是肯定的,那么快慢指针很可能就是解决问题的金钥匙。

2025-07-06 09:08:18 139

原创 C++--二叉搜索树

给一个单词word,判断该单词是否拼写正确,可以将 K 的类型定义为 string,然后将英语词库中的所有单词作为 key,构建一颗二叉搜索树,然后在二叉搜索树中对用户写出的每一个单词进行查找,如果找不到,则说明该单词拼写错误。那么这样的效率显然是无法满足需求的,后面需要继续了解二叉搜索树的变形,平衡二叉搜索树AVL树和红黑树,才会适用在内存中存储和搜索数据。,通过英文可以快速找到与其对应的中文,英文单词与其对应的中文 <word, chinese> 就构成一种键值对;

2025-07-06 09:05:44 1126

原创 LeetCode 206. 反转链表

*注意:**这个解法仍有内存泄漏的问题,因为就链表的内存没有办法释放。,请你反转链表,并返回反转后的链表。: 指向当前需要反转的节点,初始为。题目描述:给你单链表的头节点。的下一个节点,防止链表断裂。: 指向前一个节点,初始为。遍历链表,对于每个节点。

2025-07-04 23:51:02 252

原创 C++--多态

下面所提及的多态都是运行时多态(动态多态)。以下程序输出结果是什么( )A: A->0 B: B->1 C: A->1 D: B->0 E: 编译出错 F: 以上都不准确class Apublic:public:p->test();return 0;在主函数中首先观察到**创建了一个子类指针p用来指向一个子类对象B**,然后通过p调用父类的test()函数。这里可以看到test函数中调用了func函数,但是这里是由this去调用的func。

2025-07-04 23:47:27 1145

原创 C++--继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前接触的复用都是函数复用,而继承便是类设计层次的复用。下面在没有学习到继承之前设计了两个类Student和TeacherStudent和Teacher都有姓名、年龄等成员变量,都有Print这个成员函数,然而这些内容在这两个类中是重复出现的,设计到两个类里面就是冗余的。

2025-07-01 13:43:39 734

原创 C++--模版进阶

本文介绍了C++模板的进阶应用,主要包括非类型模板参数、模板特化和分离编译。非类型模板参数允许使用常量作为模板参数,类似宏定义但更灵活。模板特化分为函数模板特化和类模板特化,其中类模板特化又分为全特化和偏特化,用于处理特殊类型的情况。分离编译模式下,模板的声明和定义通常需要放在同一文件中以避免链接错误。文章通过示例代码展示了这些概念的具体应用,帮助读者更好地理解和使用C++模板的高级特性。

2025-06-11 00:22:45 956

原创 C++--stack和queue的使用及其模拟实现

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。Java 语言非常关注设计模式,而 C++ 并没有太关注,但是一些常见的设计模式还是要学习。迭代器模式其实在前面学习stringvector和list时就已经接触过设计模式了。迭代器就是一种设计模式。迭代器模式是封装后提供统一的接口iterator在不暴露底层实现细节的情况下,使得上层能够以相同的方式来访问不同的容器。适配器模式适配器模式则是将一个类的接口转换成客户希望的另外一个接口,即根据已有的东西转换出想要的东西。

2025-06-09 20:59:57 831

原创 C++--list的使用及其模拟实现

可以看到,list sort 的效率远低于 vector sort,甚至于说,直接使用 list sort 的效率都不如先将数据拷贝到 vector 中,然后使用 vector sort,排序之后再将数据拷贝回 list 中快。至此也能明白为什么 list sort 接口使用的非常少了。**注意:**在 release 版本下测试软件或算法性能得到的结果要比在 debug 版本下得到的结果具有参考意义。

2025-06-07 21:16:40 802

原创 C++--vector的使用及其模拟实现

迭代器失效一定会导致错误,所以在平时使用迭代器的时候为了保证程序的跨平台性,统一认为迭代器失效之后,必须更新后才能再次使用。

2025-06-04 22:24:36 689

原创 C++--string的使用及其模拟实现

C++中的string类简介 C++标准库提供的string类解决了C语言字符串操作中的诸多问题,如内存管理、边界检查等,并遵循面向对象思想。string本质上是一个模板类basic_string<char>,支持多种编码方式。 VS和g++编译器对string的实现不同:VS采用固定16字节小缓冲区优化,以空间换时间;g++则使用写时拷贝技术提高效率。string类提供了丰富的接口,包括构造函数、迭代器、运算符重载等。 C++11引入的auto关键字和范围for循环简化了string的遍历操作

2025-05-30 11:06:21 1021

原创 C++--STL简介

STL(标准模板库)是C++标准库的核心部分,提供了一系列可复用的数据结构和算法框架。STL起源于惠普实验室的原始版本,随后衍生出多个版本,如P.J.版本、RW版本和SGI版本,其中SGI版本因其可移植性和高可读性被广泛采用。STL包含六大组件,极大地简化了C++编程,避免了重复造轮子,提升了开发效率。由于其重要性,STL在C++学习、面试和实际工作中都是重点考察内容,掌握STL是C++程序员的基本要求。

2025-05-20 23:18:01 292

原创 C++--模版初阶

在C++中,存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码)。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。函数模版类模版。

2025-05-20 23:16:53 1413

原创 C++--内存管理

C++动态内存管理和C语言动态内存管理最大的不同在于二者对自定义类型的处理:C语言 malloc/calloc/realloc 函数只负责开辟空间,free 函数只负责销毁空间。而C++在申请自定义类型的空间时,new 会调用构造函数,delete 会调用析构函数,完成对应对象的初始化和销毁。class Apublic://构造函数: _a(a)cout << "A 构造" << this << endl;//析构函数~A()cout << "A 析构" << this << endl;

2025-05-19 23:16:32 725

原创 C++--类和对象

class 为定义类的关键字,className为类的名字(由程序员自行决定)同样也是类的类型,{} 中为类的主体,注意类定义结束时后面分号不能省略。类体中的成员称为类的成员:类中的变量称为属性或成员变量;类中的函数称为方法或成员函数。//类体:由成员变量和成员函数组成 };//注意后面的分号为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或后面加 m 开头,注意 C++ 中这个并不是强制的,只是一些惯例,要看具体的要求。

2025-05-18 15:01:30 560

原创 LeetCode 27.移除元素

这中方法虽然简单易懂,但仍然后很多小细节需要注意。而且这种方法并不能通过leetcode的平台测试,因为其空间复杂度为ON2O(N^2)ON2,超出了时间限制不合符题意。双指针法是一种非常常见的算法技巧,特别适用于处理数组、链表或字符串等序列结构的问题,尤其是涉及到原地修改或者查找特定条件的元素对时。

2025-05-05 23:45:04 592

原创 Linux系统编程--基础指令(!!详细讲解+知识拓展)

使用特定的算法,将文件进行合并或者压缩,减少体积。实际上打包压缩是两个动作,但是可以看做是一个整体。

2025-05-05 21:48:04 1070

原创 C++--入门基础

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间内的变量/函数/类等。命名空间中可以定义变量/函数/类等。namespace只能定义在全局,当然还可以嵌套定义。namespace后面的空间名不受限制,可以随机取,一般取项目名称作为空间名。//定义命名空间//定义变量//定义函数//定义类型(结构体)int data;}SLNode;//定义命名空间namespace N1//定义一个名为N1的命名空间//定义变量。

2025-05-02 22:58:09 2019

原创 LeetCode 189.轮转数组

以上两组代码的代码逻辑基本一致,主要是在将数据移动到新数组时的具体实现思路不同。输入: nums = [1,2,3,4,5,6,7], k = 3。输入: nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]**结果:**不通过,时间复杂度过高,为。输出: [5,6,7,1,2,3,4]

2025-04-29 13:39:28 455

原创 初阶数据结构--排序算法(全解析!!!)

希尔排序是按其设计者希尔的名字命名的,该算法由希尔1959年公布。

2025-04-23 21:34:24 1205

原创 机器视觉--Python补充知识

编程中,经常需要使用变量,来保存/表示数据。如果代码中需要表示的数据个数比较少,直接创建多个变量即可。num1 = 10num2 = 20num3 = 30......但是有的时候,代码中需要表示的数据特别多,甚至也不知道要表示多少个数据。这个时候, 就需要用到列表。列表是一种让程序员在代码中批量表示/保存数据的方式就像去超市买辣条, 如果就只是买一两根辣条,那直接拿着辣条就走了。但是如果一次买个十根八根的,这个时候用手拿就不好拿,超市老板就会给我们个袋子。这个袋子,就相当于列表。

2025-04-17 22:00:56 924

原创 初阶数据结构--二叉树OJ训练

本文内容承接上篇问文章,建议连续阅读。

2025-04-14 11:03:53 745

原创 初阶数据结构--链式二叉树

以上递归思路都是先遍历左子树在遍历右子树,采用的主要是左根右的中序遍历思想。上述代码中对于左子树和右子树的遍历,并不是一次性将根结点的左子树遍历完成再遍历右子树,而是针对每一个节点都是先遍历左子树再遍历右子树。(中序遍历的重要思想注意!!注意!!除了先序遍历、中序遍历、后序遍历外,还可以对二叉树过进行层序遍历。设二叉树的根结点所在层数为1,层序遍历就是从所在二叉树的根结点出发,首先访问第-一层的树根结点,然后从左到右访问第2层上的结点,接着是第三层的结点,以此类推,自上而下,自左至右逐层访问。

2025-04-12 15:00:06 804

原创 初阶数据结构--树

在文件系统中,树结构被广泛应用,它通过父结点和子结点之间的关关系来表示不同层级的文件和文件夹之间的关联。(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。在树形结构中,最常⽤的就是⼆叉树,⼀棵⼆叉树是结点的⼀个有限集合,该集合由⼀个根结点加上两棵别称为左⼦树和右⼦树的⼆叉树组成或者为空。:若一个结点含有子结点,则这个结点称为其子结点的父结点。:一个结点含有的子树的根结点称为该结点的子结点。

2025-04-05 19:29:18 940

原创 机器视觉--Python语法结构

条件语句能够表达 “如果 … 否则 …” 这样的语义, 这构成了计算机中基础的逻辑判定。条件语句也叫做分支语句如果 我认真敲代码我就很容易找到工作否则我就容易毕业就失业其中 “我认真敲代码” 称为条件。如果条件成立(条件为真), 则会出现 “我就很容易找到工作” 这个情况。如果条件不成立(条件为假), 则会出现 “我就容易毕业就失业”.当然, 同样的逻辑, 还可以反着表达。如果 我选择躺平摆烂我就容易毕业就失业否则我就很容易找到工作虽然结构变了, 但是整体表达的语义是等价的。

2025-04-04 22:06:26 809

原创 机器视觉--python基础语法

给定四个分数, 67.5, 89.0, 12.9, 32.2 , 编写代码, 求这四个分数的方差PS: 方差的计算过程: 取每一项, 减去平均值, 计算平方, 再求和, 最后除以 (项数 - 1)在这个代码中,需要先计算四个数的平均值再计算方差,所以就需要一个变量保存平均数。注意avg, total, result 均为变量.** 在 Python 中表示乘方运算. ** 2 即为求平方变量可以视为是一块能够容纳数据的空间。这个空间往往对应到 “内存” 这样的硬件设备上a = 10。

2025-04-02 22:17:19 1508 1

原创 视觉入门--Python入门

这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

2025-04-02 03:32:02 340

原创 计算机三级网络技术大题总结

做题口决: 网络位不变,主机位全部变为 0。例题: IP 地址为: 125.175.20.7,子网掩码为: 255.224.0.0将其 IP 地址和子网掩码转换为二进制得如下:其中子网掩码为 1 对应的二进制位为网络位,子网掩码为 0 对应的位为主机位。位与主机位。可以看出 是网络位,而 是主机位。 因此此网络地址为: ,转换为十进制为: 125.160.0.0小技巧:通过观察可以看出,子网掩码为 255 转换为二进制为。因此当子网掩码为 255 时,所在对应段为网络位。 同理,子网掩码为 0 时对应的

2025-03-28 19:42:35 1141

原创 计算机三级网络技术知识汇总【11】

管理站(Manager)通过 SNMP 定义的 PDU 向代理(Agent)发出请求,而 Agent 将得到的 MIB 值通过 SNMP协议传送给 Manager。SNMP 模型的定义比较简单,并不在每层都定义有管理实体,只在 TCP/IP 协议层上进行定义。

2025-03-22 15:46:58 820

原创 计算机三级网络技术知识汇总【10】

配置 1:Pix525(config)#conduit permit tcp host 192.168.0.3 eq www any含义:配置允许任何外部主机对全局地址 192.168.0.3 的这台主机进行 HTTP 访问。fixup:配置 FIXUP 协议。fixup 命令的作用是启用、禁止、改变一个服务或协议勇敢 PIX 防火墙的端口,由 fixup 命令指定的端口是 PIX。

2025-03-21 17:20:37 1025

原创 初阶数据结构--顺序表

上文对实现了动态顺序表的增删查改,通过上述函数的编写,可以在其中找到一些共性和规律。断言部分**所以情况:**无论是实现如何功能的函数都需要接受传来的指向顺序表的指针,然而后续都需要对其进行解引用,所以首先要确保此指针不能是空指针。assert(ps);**删除数据:**因为对于一个空的没有数据的顺序表执行删除操作是没有意义的,所以也需要确保顺序表中的size的值不为0。**指定位置:**在对于在顺序表中的任意位置插入或删除数据的这种普适情况,pos指向的位置不应该包含头部和尾部。

2025-03-21 00:18:02 1000

原创 STM32F407ZGT6--工程模版

按照下图顺序点击。之后和添加文件一样,找到对应文件夹的路径一路点击添加即可。接下来需要添加全局宏定义标识符,仍是在该页面底下,在。

2025-03-15 17:02:32 1323

原创 计算机三级网络技术知识汇总【9】

① 在 IE 浏览器地址栏中输入 FTP 服务器的 IP 地址,即在浏览器地址栏中输入“ftp://IP 地址/” ,即会打开【登录身份】对话框,在此对话框中输入用户名和密码,也可以选 择匿名登录,就可以登录到 FTP 服务器上;组:为简化账户的权限管理,可以将大量的、具有相同访问权限的账户集中到一个组内。② 动态映射,建立一套域名解析系统(DNS),只在专门的 DNS 服务器上配置主机到 IP 地址的映射,网络上 需要使用主机名通信的设备,首先需要到 DNS 服务器查询主机所对应的 IP 地址。

2025-03-13 20:53:26 1096

原创 初阶数据结构--复杂度

此题仍然因为排序存在多种情况,所以需要分情况讨论写出不同情况的时间复杂度。

2025-03-12 21:32:38 866

原创 计算机三级网络技术知识点汇总【8】

Cisco Aironet 1100 是无线局域网收发器的一种,主要是用于独立无线网络的中心点或。

2025-03-10 19:19:46 887

原创 计算机三级网络技术知识点汇总【7】

路由器是工作在网络层的设备,负责将数据分组从源端主机经最佳路径传送到目的端主机,实现在网络层的互联。路由器工作在 TCP/IP 网络模型的网络层,对应于 OSI 网络参考模型的第三层,因此,路由器也常称为网络层互 联设备。路由器是互联网的主要节点设备。路由器通过路由决定数据的转发,转发策略称为路由选择(routing),这也 是路由器名称的由来(router,转发者)。

2025-03-08 11:05:28 1168

原创 C语言--预处理详解

1000register//为 register这个关键字,创建一个简短的名字for;;//用更形象的符号来替换一种实现break;case//在写case语句的时候自动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。printf# define MAX 1000 # define reg register //为 register这个关键字,创建一个简短的名字 # define do_forever for(

2025-03-02 22:53:20 838

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除