自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 30.串联所有单词的子串

题目:给定一个字符串 s 和一些 长度相同 的单词 words 。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。注意子串要与 words 中的单词完全匹配,中间不能有其他字符 ,但不需要考虑 words 中单词串联的顺序。示例 1:输入:s = "barfoothefoobarman", words = ["foo","bar"]输出:[0,9]解释:从索引 0 和 9 开始的子串分别是 "barfoo" 和 "foobar" 。输出的顺序不重要, [9,

2022-01-15 00:53:57 91

原创 两张图理解迪杰斯特拉算法

1.思想:迪杰斯特拉最最朴素的思想就是按长度递增的次序产生最短路径。即每次对所有可见点的路径长度进行排序后,选择一条最短的路径,这条路径就是对应顶点到源点的最短路径。2.限制:图G中不存在负权值的边3.理解:看到两张图对于这个算法的理解有帮助:...

2021-12-02 11:30:13 556

原创 数据结构 图的邻接表

邻接表的出现是因为图若是稀疏图,用邻接矩阵会造成空间的浪费,毕竟你要开辟一个一维数组和一个二维数组嘛,而且还是大开小用的那种。邻接表为了避免内存的浪费引入了链式存储,它的处理办法是:1.用一个一维数组存储顶点,当然你也可以用单链表存储,2.用单链表存储顶点的邻接点,可以将顶点改为结构体数组,结构体中存放邻接点的指针,邻接点也创建一个结构体,定义指针next存放该顶点的另一个邻接点,这样就可以把该顶点的所有邻接点串起来了。下面是一个无向的网图:邻接表中数据的存储图示如下顶点..

2021-11-17 19:13:17 511

原创 DS二叉树——二叉树之父子结点

题目描述给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构。编写程序输出该树的所有叶子结点和它们的父亲结点输入第一行输入一个整数t,表示有t个二叉树第二行起,按照题目表示的输入方法,输入每个二叉树的先序遍历,连续输入t行输出第一行按先序遍历,输出第1个示例的叶子节点第二行输出第1个示例中与叶子相对应的父亲节点以此类推输出其它示例的结果样例输入3AB0C00D00AB00C00

2021-10-28 10:41:04 291

原创 数据结构学习(十)线索二叉树与森林二叉树转化

1.线索二叉树是什么?为了区分二叉树的左孩子指针和右孩子指针是否为空,或者是否指向前驱节点或后继节点,我们将节点的结构改成5个域,在原二叉树的基础上添加左标志域Ltag和右标志域Rtag,他们是两个int型的数据域。Lchild Ltag data Rtag Rchild 1.如果节点有左孩子,那么Lchild依然指向他的左孩子,否则指向遍历序列中他的前驱节点。2.如果节点有右孩子,那么Rchild依然指向他的左孩子,否则指向遍历序列中他的后继节点。3.Ltag

2021-10-25 22:49:06 429

原创 数据结构学习(九)二叉树性质

1.在二叉树的第i层上最多有2^(i-1)个节点 。(i>=1)用归纳法证明:归纳基:i = 1 层时,只有一个根结点, 2i-1 = 20 = 1;归纳假设:假设i=k时,命题成立;归纳证明:二叉树上每个结点至多有两棵子树,则第 k+1 层的结点数 最多为2k-1 x 2 = 2k+1-1 。只要稍微画画图就能理解了。2.深度为k的二叉树,至多有2^k-1个节点。(k>=1)由性质1,深度为 k 的二叉树上的结点数至多为:2...

2021-10-19 13:49:22 185

原创 数据结构学习(八)二叉树

二叉树学习:1.概念一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。二叉树的特点:每个结点最多有两棵子树,即二叉树不存在度大于2的结点。 二叉树的子树有左右之分,其子树的次序不能颠倒。2.数据结构中的二叉树3.特殊二叉树3.1完全二叉树若堆的深度【层数】为h,除了最后一层,其上各层 (1~h-1) 的结点数都达到最大个数,并且最后一层所有的结点都连续集中在最左边,这就是完全二叉树。3.2堆堆是利用完全二叉

2021-10-12 16:20:00 306

原创 Selenium入门

Selenium 快速入门1.Selenium提供了8种定位方式:id name class name tag name link text partial link text xpath css selector2.定位元素的8种方式定位一个元素 定位多个元素 含义 find_element_by_id find_elements_by_id 通过元素id定位 find_element_by_name find_elements_b...

2021-10-03 20:03:14 89

转载 数据结构学习(七)树

1、树的定义线性表、栈、队列、串是一对一的数据结构,而树是一对多的数据结构。树(Tree)是n(n≥0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree),如图6-2-1:树的定义其实就是我们在讲解栈时提到的递归方法。也就是在树的定义之中还用到了树的概念,这是一种比较新的定义方法。图6-

2021-09-27 00:27:28 206

原创 KMP算法

KMP 算法是一个快速查找匹配串的算法,它的作用其实就是本题问题:如何快速在「原字符串」中找到「匹配字符串」。KMP 算法的复杂度为 O(m + n)。KMP 之所以能够在 O(m + n)复杂度内完成查找,是因为其能在「非完全匹配」的过程中提取到有效信息进行复用,以减少「重复匹配」的消耗。可以通过举 ???? 来理解 KMP。1. 匹配过程在模拟 KMP 匹配过程之前,我们先建立两个概念:前缀:对于字符串 abcxxxxefg,我们称 abc 属于 abcxxxxefg 的某个

2021-09-20 01:04:39 181

原创 爬虫bs4

一、bs4简介即BeautifulSoup,是python种的一个库,最主要的内容就是从网页中抓取数据。Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Sou

2021-09-12 22:14:12 103

原创 回溯法初识与sort排序

1.回溯法1.1前言在今天遇到了用回溯法解决的题目,来记录下简单的回溯法用法。1.2简介回溯法简单来说就是按照深度优先的顺序,穷举所有可能性的算法,但是回溯算法比暴力穷举法更高明的地方就是回溯算法可以随时判断当前状态是否符合问题的条件。一旦不符合条件,那么就退回到上一个状态,省去了继续往下探索的时间。状态的返回只有当前的节点不再满足问题的条件或者我们已经找到了问题的一个解时,才会返回,否则会以深度优先一直在解空间树内遍历下去。当然,对于某些问题如果其解空间过大,即使用回溯法进行计算也有很

2021-09-05 18:33:15 208

原创 数据结构学习(六)队列

1.简介队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出...

2021-08-29 00:14:04 126

原创 正则表达式 与 二分查找

记一下最近遇到的1.正则表达式1.1元字符元字符是构造正则表达式的一种基本元素。. :匹配除换行符以外的任意字符w:匹配字母或数字或下划线或汉字s:匹配任意的空白符d:匹配数字b:匹配单词的开始或结束^:匹配字符串的开始$:匹配字符串的结束匹配有abc开头的字符串:abc或者^abc匹配8位数字的QQ号码:^dddddddd$匹配1开头11位数字的手机号码:^1dddddddddd$1.2重复限定符*:重复零次或更多次+:重复一次或更多次..

2021-08-22 00:19:32 91

原创 C++—vector与unordered_map

1.vector1.1说明vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。进行vector操作前应添加头文件#include <vector>1.2初始化1.vector<int>a(10); //定义具...

2021-08-14 15:40:45 2749

原创 数据结构学习(五)双向链表和栈的初学

一、双向链表1.1简介双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。1.2特点每次在插入或删除某个节点时, 需要处理四个节点的引用, 而不是两个. 实现起来要困难一些。 相对于单向链表, 必然占用内存空间更大一些。 既可以从头遍历到尾, 又可以从尾遍历到头。简图如下:从上中可以看到,双向链表中各节点包含以下 3 部分信息:.

2021-08-07 16:25:56 529

原创 数据结构学习(四)循环链表

一、定义:循环链表是另一种形式的链式存储结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。二、分类:(1)单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点即可。(2)多重链的循环链表——将表中结点链在多个环上[1]。三、判断是非为空链表:判断空链表的条件是head==head->next;rear==rear->next;四、尾指针:用尾指针rear表示的单循环链表对开始结点a1和终端结点an查找时...

2021-08-03 00:47:16 511

原创 数据结构学习(三) 顺序存储和链式存储

一、顺序存储结构(也可称为顺序表)顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预先分配。 优点: (1)方法简单,各种高级语言中都有数组,容易实现。   (2)不用为表示节点间的逻辑关系而增加额外的存储开销。   (3)顺序表具有按元素序号随机访问的特点。 缺点: (1)...

2021-07-25 00:38:49 4973

原创 数据结构学习(二) 时间复杂度和空间复杂度

算法判断优劣算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。那么我们应该如何去衡量不同算法之间的优劣呢?主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。一、时间复杂度大O符号表示法,即 T(n) = .

2021-07-18 02:15:19 321

原创 数据结构学习(一)

前言下学期开始数据结构的课程,现在暑假时间快到了,我要准备开始这方法的学习了。定义 百度:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 补充:传统上我们把数据结构分为逻辑结构和物理结构。逻辑结构定义: 百度:系统的逻辑结构是对整个系统从思想的分类,把系统分成若干个逻...

2021-07-11 03:08:34 157

原创 Windows平台简单的软件破解

一、Windows平台软件破解必备知识文件格式:PE文件 汇编语言:x86、x64汇编 工具:Ollydbg Windows API二、OD(也就是Ollydbg)常用快捷键F2:切换断点 F9:运行程序 F7:Step Into F8:Step Over Ctrl + G:搜索代码在学习一段时间做个植物大战僵尸外挂...

2021-07-04 07:58:40 1105

原创 C++智能指针

0.前言C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。1.shared_ptr1.1设计原理多个shared_ptr可以指向同一个对象,当最后一个shared_ptr在作用域范围内结束时,对象才会被自动释放。1.2

2021-06-26 23:50:13 186 2

原创 C++标准的发展以及C++11新特征

C语言起源 【起源】 C 语言最早的原型是 ALGOL 60 1963 年,剑桥大学将其发展成为 CPL(Combined Programing Language)。 1967 年,剑桥大学的 Matin Richards 对 CPL 语言进行了简化,产生了 BCPL 语言。 1970 年,美国贝尔实验室(Bell Labs)的 Ken Thompson 将 BCPL 进行了修改,并取名叫做 B 语言,意思是提取 CPL 的精华(Boiling CPL down to its basic go...

2021-06-19 21:16:00 453 1

空空如也

空空如也

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

TA关注的人

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