自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣题解26-30

题解

2022-11-06 14:41:53 427

原创 VScode写C++读文件时遇到的问题

vscode读文件

2022-09-30 21:51:15 1045 1

原创 力扣题解22-25

链表

2022-09-07 15:39:14 361

原创 力扣题解19-22

栈、列表

2022-09-01 17:51:47 233

原创 力扣题解17-18

题解

2022-08-31 15:44:32 301

原创 最接近的三数之和

双指针

2022-08-27 22:20:14 144

原创 力扣题解12-15

算法训练

2022-08-23 22:41:54 182

原创 11.盛水最多的容器

一重循环双指针解决

2022-08-18 12:46:29 130

原创 10 正则表达式匹配

正则表达式匹配 动态规划

2022-08-16 20:33:43 230

原创 力扣题解6-8

力扣题库6-8

2022-08-14 14:39:46 232

原创 5.最长回文子串

最长回文子串

2022-08-12 15:01:25 136

原创 4.寻找两个正序数组的中位数

寻找两个正序数组的中位数

2022-08-11 16:27:15 217

原创 virtualbox宿主机访问虚拟机启动的服务器端口

virtualbox宿主机访问虚拟机服务器

2022-06-11 16:39:26 1530 1

原创 3.无重复字符的最长字串

中等题如果是使用python,直接从最长的字符串开始递减遍历,然后判断子串是否无重复(字符串长度等于集合元素个数就行了),找到一个就结束遍历,会存在算法复杂度的问题。假设字符串长度为n,外层循环n,将字符串转换为集合的操作复杂度是O(n),这样复杂度在O(n2)。使用C++如果这么做也一样,只是没有那么方便判断无重复字符。我想到的一个办法是,先内部排序(平均情况最好O(nlogn)),再遍历,如果相邻两个字符一样,就重复了,舍去。这样做复杂度还要高于前面一种。如果是小规模数据当然是没问题,如果数据很大那

2022-04-10 11:50:55 1579

原创 2.两数相加

标题暂时这么起着,做多了再考虑要不要改吧。写过很多乱七八糟的代码,但是算法实在做的不多。想要提升静下心来一题一题刷是没办法的事,一开始也只能做点简单题。我的想法是:做一题一定要做到位,能得到什么启发就记录下来,不要好高骛远,这也是之前所犯的错误。总结性的东西用颜色标注出来,复习的时候可以减少阅读时间。消化掉的才是好东西,简单题就少消化,难题就多消化,第一个小目标是200题。如果后续做题觉得实在容易,就一篇文章多塞几道题。整理时间另作决定。不做说明都是使用C++编写。中等题/** * Definit

2022-04-06 23:34:29 571

原创 每天抽空刷力扣

多少每天整个一两题吧,写一写思路做法,这是我第几次开始想刷力扣来着?总比刷考公题有意思吧。

2022-04-05 18:36:12 81

原创 python第二次回顾学习(持续更新)

三年前大一第一次接触的编程语言就是Python,达到的巅峰水平就是写一个很多函数扔在一起的文件,后来学编译原理的时候用python写实验报告,然后基本上就是在用C++和JavaScript了。借这个考研复试的机会重学一次,希望能查漏补缺,能深入一些到工程层面更好,来不及就算了。2022.2.25看到关于列表的删除添加排序等等,方法很多,从使用方法来看分成两种,一种是面向对象形式的,一种是内置函数形式的。python自动识别定义的变量的类型,定义即声明。lst.sort()这种方法就是调用成员函数了吧,当

2022-02-26 10:58:26 699

原创 C++抽象类纸上谈兵

插眼,这一块部分以后肯定要在实战中反复强化理解认识的,光是看几遍书感觉没法抓到核心。抽象类的引入因为某些类作为基类,反映了子类的共同特性。但是这些基类没有单独实例化的意义。因此在这些类中,将不具体实现的成员函数声明成纯虚函数(虚函数声明再在后面跟=0)。只要是抽象类必然有不能实现的函数,所以一定有纯虚函数。当其某个子类将所有基类的纯虚函数都覆盖实现后,该子类便成为一个具体的类。...

2022-02-21 10:30:44 500

原创 C++多态原理纸上谈兵

继承召唤多态。多态就是多种形态。因继承而生创建出的对象理所当然地拥有其基类的所有成员,所以从本质上来说,它既可以被称为是子类的对象,又可以被称为是父类的对象。如果子类和父类中定义了完全相同的两个成员函数,又对新创建的子类对象调用这个成员函数,那么就会分不清是调用基类的还是子类的。解决办法是虚函数机制。将基类函数标记为virtual虚函数,编译时则暂时将绑定对象这一步滞后(没运行前不知道是子类还是基类),而是做一个向即将绑定的该实际对象的成员函数的间接访问。那么在运行时,就能根据情况选择子类函数还是基类函数

2022-02-20 19:42:10 382

原创 C++继承纸上谈兵

子类继承基类,将得到其所有类成员。继承方式不同,访问控制也不同。public、protected、private三种继承方式,相应三种类成员的权限共产生3x3 = 9种访问控制属性(记忆:1、没有哪种继承类型能访问基类private的成员。2、public继承不改变类成员访问属性。3、protected和private把剩下的其他成员改造成和自己一样)。构造函数和拷贝构造函数同样使用冒号语法,调用基类的构造函数。组合与继承的关系。组合是A类成员中有B,继承是B是A的子类。主要问题在于这两个类的性质。组合表示

2022-02-20 10:40:54 339

原创 C++对象创建与释放

简单来说,涉及到构造函数,构造函数重载,成员初始化,拷贝构造函数,析构函数。构造函数没有返回值,成功就成功了。失败进行异常处理。所以用ObjectName::ObjectName(){}构造。根据传参不同支持重载。一个构造函数都没有的话会默认一个无参数构造函数,但是一旦有一个及以上的构造函数就没有这个无参构造函数了,所以如果有需求要自己写一个无参版本的构造函数。使用无参构造函数构造一个对象,为了与返回类型为对象的无参函数的声明的语法区分,不能加括号(Date d;想一想,Date d();不就是声明了么)

2022-02-19 19:31:13 531

原创 C++类机制认识的螺旋上升过程

C++类机制太有名了,程序员应该都会喜欢这个设计。从最基本的说,类是封装了数据和操作。再不精确地说,定义了一个类,使用它可以在不需要知道内部如何实现的情况下,拿到一坨代码,就能很快地放入参数并使用。以上是初次的直观认识,接下来探讨细节,如声明和定义、访问权限、创建对象。关于成员函数:定义可以在类内也可以在类外。定义在类内就是默认声明内联(内联就是性能优化,不过据说是不超过1行的函数才行),定义在类外要加上类名名空间(如void Date::set())表示该函数属于Date类。常成员函数不能改变对象的值,

2022-02-19 17:11:56 186

原创 C++程序结构的螺旋式上升的认识过程

正如任何一个划水躺平的本科生一样,在低年级的专业课上解决完了考试,就逐渐将平时用不到的知识忘得一干二净。现在抽出空来,对这些想来还是比较基础性的知识进行回顾,准确得说是对书上的知识进行适合于本人的归纳和转述,使其内化成长时间不容易忘记的个人技能。废话讲完,进入正题。低年级的时候谈编程,总是一个程序文件,进行基础性的语法训练。在没有接触过真正的大型项目前,一切关于程序工程的设想,都是理论上的。因此下文全部省略前提:书上说。C++程序当然要考虑一个工程。一个完整的程序在没有那么抽象的考虑下,就是一大坨程序文件

2022-01-04 15:40:33 689

原创 编译原理 规范LR方法

复习我们之前学习了SLR技术,包括LR(0)文法和SLR(1)文法,不过我们还是遇到了移进-归约冲突(SLR(1)、LR(0))和归约-归约冲突(LR(0))的问题。其原因就是我们的项集构造不够精确,如果能在状态中包含更多的状态信息,在建表的时候就能排除掉一些不可能出现的归约动作。...

2020-05-28 13:47:20 2631

原创 编译原理 LR语法

复习我们想要通过自底向上文法来进行语法分析,就要使用移入-归约法不断将右串归约成左侧的非终结符最后回到开始字符。在这个过程中,遇到的问题有:何时移入?何时归约?归约时哪部分归约?归约成哪部分?LR(k)文法L表示从左往右扫描,R表示反向构造出一个最右推导,k表示向前看k个字符,缺省为1。一个输入:字符串w;一个输出:分析完成的树;一个栈;一个驱动程序;一个已发分析表。分析表包括Action部分和Goto部分。每次实现,先将初始状态S0压入栈,将串w$作为输入缓冲区内容。接着调用驱动程序

2020-05-19 21:02:19 9816

原创 编译原理 自底向上语法分析

引言自底向上的语法分析相当于从叶子节点开始向上一直到根部构造一棵语法树。我们将使用移入-归约法完成这一过程。归约定义:一个与某产生式体相匹配的特定子串被替换成该产生式头部的非终结符号。相当于反向的最右推导。举例:给定文法:S->aABeA->Abc | bB->d串abbcde可以由推导S=>aABe=>aAde=>aAbcde=>abbcde得到。那么逆置最后一步,把b替换成非终结符A就是归约,并且称这个b为句柄。句柄:如果有S->

2020-05-12 16:07:00 1817

原创 编译原理 LL(1)文法

复习为了构建语法树(目的)我们采用了自顶向下的语法分析(方法),深度优先地创建各个节点。这其中我们讨论到非递归向下的语法分析,需要借助预测分析表来实现。所谓LL(k)文法,就是构造出向前看k个输入符号的预测分析器。这一节讨论向前看1个输入符号的LL(1)文法。FIRST函数定义:FIRST(α)表示可从α推导得到的串的首符号的集合。其中α为任意的文法符号串(非终结符,终结符,空串e)。特别...

2020-05-05 19:33:28 4786 1

原创 编译原理 自顶向下语法分析

自顶向下语法分析对于任何输入串,从文法开始符号(根节点)出发,自上而下,从左到右地为输入串建立语法分析树。简而言之,就是寻找输入串的最左推导的过程。之前我们了解到,一旦有左递归存在便无法构建这样的语法树,所以用自顶向下语法分析必须先去除左递归。同样,由于使用最左推导,也不能处理有复杂回溯的输入串。递归向下的预测分析自顶向下的语法分析的一种。预测分析能够根据当前输入的符号为非终结符确定采用哪...

2020-04-30 23:29:04 2499

原创 编译原理 上下文无关文法

引言学完了词法分析,我们知道词法分析器将正则表达式转换成词法单元流,但对于这个记号流我们不知道是否能由正确的文法产生,因此我们需要通过语法分析器来检测其合法性。语法分析器的输出是一棵语法分析树(无论显性还是隐性),并且进行一些语法纠错处理。语法分析的整个过程大概就是我们先定义一个语法,再用相应的算法来检测我们的词法单元流是否符合该语法。这里主要讨论上下文无关文法构成的语法和自顶向下、自底向上的语...

2020-04-18 23:19:07 2132

原创 数据库系统概论 关系代数

引言关系数据库不是仅仅用来看的,必须有相应的运算来支撑才能得到我们想要的结果。之前也提到,关系数据库有完整的数学模型来支撑,因此这一节可能就要考一考笔者的数学能力了!(虽然上学期离散考得还行,但数学乃我一生之大敌…)关系数据库语言对数据库系统下达指令需要语言。分为三类:关系代数语言关系演算语言具有关系代数和关系演算双重特点的语言至于这些语言的特点将分别展开说明。关系代数的运算符...

2020-04-07 00:10:33 649

原创 数据库系统概论 关系模型

引言现在比较流行的数据库都支持关系数据库,因为其完整的数学模型。本节从数据模型三要素的角度来讨论关系模型,为建立关系数据库打基础。关系及引申概念关系:R(D1,D2,…,Dn): D1×D2×…×Dn(笛卡尔积)的子集称为在域D1,D2,…,Dn上的关系(同离散数学)域:取值范围属性:不同的列称为属性候选码:能唯一标识一个元组的一个属性组全码:候选码的属性组是全部属性这个列出一...

2020-04-06 11:18:50 368

原创 数据库系统概论 数据库系统结构和组成

引言下面我们要做的就是给数据库的实现搭架子,再把数据放在搭好的架子里。因此我们需要了解我们怎么搭这个架子以及这个架子的工作原理。模式(Schema)描述数据库逻辑结构的特征。举个例子:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)这里的学生表本身并不是一条数据,而是所有的学生数据都要按照这个模式存储起来。实例模式的一个具体值。就上面的模式可以有这样的实例...

2020-04-05 16:48:01 307

原创 基于MYT算法和自顶向下算法从正则表达式到NFA

复习有限自动机分为两种:不确定的有限自动机(NFA)和确定的有限自动机(DFA)。我们分别用一个五元组表示。不确定的有限自动机:有限状态集合S.输入符号集合Σ转换函数move:Sx(Σ∪(ε)->p(s))状态S0是唯一的开始状态F包含于S是接受状态集合确定的有限状态自动机1、2、4、5与NFA一样。转换函数move:Sx(Σ)->p(s),两者区别在于:有限自动机任...

2020-04-04 21:29:26 3226 1

原创 数据库系统概论 数据模型

引言数据模型是建立数据库的框架。按照这个框架,把很多的数据可以很有序地组织起来,这样才能构建数据库。转换过程现实世界–>概念模型–>逻辑模型–>物理模型概念模型,大概就是类似于高度抽象化编程我们会建立的模型,这个模型机器是看不懂的,但是人要能很好地理解,也就是要有较强的语义表达能力,并且简单清晰。是按照用户观点的。逻辑模型,言简意赅地说,是按照计算机观点的,用于DBMS...

2020-04-02 00:01:55 242

原创 数据库系统概论 绪论

引言作为一个初学者,笔者也是第一次接触数据库这个概念,不知道它跟平常一般人所说的数据库有没有什么不一样的地方。不过既然学校开了这门课,就还是好好把这些基础知识的基本功打好。本节笔者试着说明数据库的大致概念,功用诸如此类,不过笔者不会死扣概念,因为笔者考试不考,而且自己也记不住。数据库假设我们都知道了数据的概念。这个还是很好懂的,比如一条宾馆开房记录(?)把很多很多条这样的记录搭建起来,注意是...

2020-04-01 20:49:02 146

原创 Hopcroft最小化算法化简DFA

复习我们将一个正则表达式通过MYT算法转化成了一个不确定有限自动机(NFA),又千辛万苦用子集构造算法整合掉多余的状态,生成了一个确定有限自动机(DFA),然后发现状态还是太多了,并不是最精简的、状态最少的。为了让计算机更快地执行,只好我们再出马给他整一个算法,来化简DFA,直到状态数最少。这个算法就是Hopcroft最小化算法。重要函数Split(G)输入:G,一个状态集合输出:T1,...

2020-04-01 00:42:59 1485

原创 Bit Compressor(DFS搜索)

题目:资源限制时间限制:1.0s 内存限制:256.0MB问题描述  数据压缩的目的是为了减少存储和交换数据时出现的冗余。这增加了有效数据的比重并提高了传输速率。有一种压缩二进制串的方法是这样的:  将连续的n个1替换为n的二进制表示(注:替换发生当且仅当这种替换减少了二进制串的总长度)  (译者注:连续的n个1的左右必须是0或者是串的开头、结尾)  比如:11111111001...

2020-02-19 23:05:50 896

转载 Sticks(DFS搜索+剪枝)

题目:SticksTime Limit:1000MS Memory Limit:10000KBDescriptionGeorge took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to...

2020-02-18 23:53:38 373

空空如也

空空如也

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

TA关注的人

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