自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客TOP101:单链表的排序

left和mid一次走一步,right一次走两步,这样当right到最后一个结点时,mid就在中间,然后再让left->next指向nullptr,断开两个链表。按我们以往的排序算法来看,针对链表来说都是太不合适,因为很多都会出现指针前移后移,后移还好说,前移对于链表来说就太难了,而且大部分都是某一个位置和另一个离它很远的位置进行比较交换位置,这在链表中是不切实际的。其原理就是先通过递归将一个链表分成一个一个单个的结点,然后两两进行比较、排序、连接,这是第一次排序,再往后就是。,其实针对于单个链表的排序,

2024-07-20 21:59:34 470 5

原创 牛客:TOP101链表相加(二)

运算也很简单,取出链表中的数据,进行相加,将结果重新构建一个结点(为了方便连接,我们可以先开辟一个头节点),然后连接到我们的头节点上,然后两个链表都往后移,进行下一位运算,一直到结束。这里要注意两个链表长度不一样,可能会遇到一个链表先走完的情况噢。按照我们习惯的加法运算,肯定是要从个位开始相加,然后十位……,但是在链表中如果我们先运算后面的,那么接下来我们是无法找到前一位的。想要解决这个问题也很简单:。逆置完成之后我们就可以从头开始相加了。那么接下了就是两个链表一位一位进行相加了,要注意进位问题噢。

2024-07-20 21:42:09 392

原创 牛客TOP101:两个链表的第一个公共结点

如果两个链表相交的话,它们相交之后的长度是一样的,我们不用考虑。问题就在于我们不知道两个链表的前面的长度,不知道它们何时会相遇,那么我们可以先求出两个链表从头到尾的长度,求它们的差,让长度长的先走它们的长度之差步,这样它们剩余的路径长度就一样了。

2024-07-19 22:48:44 467 3

原创 牛客TOP101:链表中倒数最后k个结点

求的是倒数第k个结点,我们可以先让一个快指针走k步,慢指针指定头节点,这样快慢指针之差就是倒数第k个结点到空节点的距离,因此只要快指针走到空,那么慢指针指向的就是倒数第k个结点。

2024-07-19 22:30:20 296

原创 牛客TOP101:链表中环的入口结点

【代码】牛客TOP101:链表中环的入口结点。

2024-07-18 21:41:57 673 4

原创 牛客TOP101:判断链表中是否有环

快慢指针,原理就是快指针一次走两步,慢指针一次走一步,快指针会先进入到环中进行循环,慢指针后进行。以相对来看,快指针是比慢指针多走一步,只要进入到环中,那么快指针迟早会追上慢指针。如果没有环,就会走到nullptr。

2024-07-18 21:32:40 294

原创 牛客TOP101:合并k个已排序的链表

因此我们就可以采用归并排序的思想,分治。其原理就是先两两进行合并,比如:下标为1和2的合并,3和4的合并,依次类推。多个链表的合并本质上可以看成两个链表的合并,只不过需要进行多次。最简单的方法就是一个一个链表,按照。另外一个思路,我们已经可以完成两个链表的合并了,那么这个工作就可以抽象出来,不去考虑这个工作。那么问题就转化成了将一个数组中的两两值(链表)进行合并。的思路,循环多次就可以了。

2024-07-16 22:25:44 322 4

原创 牛客TOP101:合并两个排序的链表

与正常的合并两个有序数组思路一样,这里可以定义一个头节点(虚拟节点),可以方便我们一开始进行连接。用两个指针标记两个链表的结点,进行循环比较,谁小谁连接到我们开辟的头节点上。最后判断谁没连接完,直接连接上就可以了。

2024-07-16 22:16:25 206 1

原创 protobuf简介

编写 .proto ⽂件,⽬的是为了定义结构对象(message)及属性内容。使⽤ protoc 编译器编译 .proto ⽂件,⽣成⼀系列接⼝代码,存放在新⽣成头⽂件和源⽂件中。依赖⽣成的接⼝,将编译⽣成的头⽂件包含进我们的代码中,实现对 .proto ⽂件中定义的字段进行设置和获取,和对 message 对象进行序列化和反序列化。

2024-07-16 15:16:09 1131 10

原创 牛客TOP101:链表内指定区间反转

如果翻转的区间包含了头节点,那么翻转之后的函数返回值就不再时原来的头节点了,而是我们翻转之后的结点(做过翻转链表这个题就知道为什么了),如果翻转区间不包含头节点,那么最终的返回值依旧是原来的头节点。(因此这里是需要进行判断的)我们可以将翻转区间之外的部分先忽略掉,这样问题就转化为了翻转整个链表。在翻转完成后,在将剩余的部分连接起来就可以了。这道题和反转链表的区别在于:它仅仅只翻转其中的某一个区间,但是我们可以将问题进行转化,转化为翻转链表。我在代码实现部分详细说明的每一步的代码意义,相信会对大家有所帮助。

2024-07-15 23:18:52 660 6

原创 牛客TOP101:反转链表

具体做法就是,使用cur标记当前结点,代表这我们将要翻转这个结点的指向,prev指向它的前面的一个结点,next保存它后面的一个结点,然后循环修改cur的指向结点就可以了。简单粗暴的写法,就是从头到尾挨个将所有结点的指向翻转即可。需要注意的是,翻转之后会失去原有指向的结点,所以需要提前保存。

2024-07-15 21:27:12 299 1

原创 MySQL篇十二:用户管理

如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。

2024-07-14 18:11:38 231 1

原创 牛客:DP25 删除相邻数字的最大分数(动态规划)

如果选择了,那么 f [i] = nums [ i ],但是我们得到的只是这一个数,应该在加上前面的结果,这个数被选了,那么前面的数就是被删除的,也就是不选的,那么 f [i] = nums [ i ] + g [ i - 1]。的分数,因此为了能快速统计出选择某一个数所能得到的分数,我们可以在输入数据时,使用一个数据来计算出选择一个数所能得到的分数(哈希)。对于某一个数,如果我们选择它,那么就会得到它对应的分数,我们使用 f [ ] 数组进行保存,使用 g [ ] 数组保存不选择这个数所能得到分数。

2024-07-14 18:09:06 243 2

原创 牛客:组队竞赛(贪心)

很简单——贪心,因为要保证第三个数比第二书还要大,所以我们将数据进行排序后(升序),选取倒数第二个数作为我们第一组数据的第二的数,从最前面选一个小数作为第一个数,这样一组数据就完成分组了。然后将倒数第三个数作为第二组数据的第三个数,倒数第四个数据作为第二组数据的第二个数,以此类推……题目的意思就是三个数为一组,并且是有序的,如果才能将所有组的第二个数之和最大,也就是尽可能的将每一组的第二个数弄成最大值。

2024-07-14 17:44:57 304

原创 牛客:乒乓球筐(哈希)

使用两个哈希表将A和B盒中的字符全部同统计出来,进行比较大小就可以了。

2024-07-14 17:35:57 174

原创 MySQL篇十一:视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

2024-07-14 17:18:35 196 1

原创 MySQL篇十:事务

CURD不加控制,会有什么问题?当客户端A检查还有一张票时,将票卖掉,还没有执行更新数据库时,客户端B检查了票数,发现大于0,于是又卖了一次票。然后A将票数更新回数据库。这是就出现了同一张票被卖了两次。CURD满足什么属性,能解决上述问题?买票的过程得是原子的吧买票互相应该不能影响吧买完票应该要永久有效吧买前,和买后都要是确定的状态吧事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。

2024-07-13 19:39:28 849 3

原创 MySQL篇九:索引

索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个海量数据的检索速度。主键索引(primary key)唯一索引(unique)普通索引(index)全文索引(fulltext)–解决中子文索引问题。

2024-07-12 16:55:20 1565 2

原创 MySQL篇八:表的内外连接

表的连接分为内连和外连。

2024-07-12 14:33:02 204

原创 MySQL篇七:复合查询

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。

2024-07-10 15:13:37 1288 7

原创 MySQL六:内置函数

注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)

2024-07-10 15:04:33 329

原创 MySQL篇五:基本查询

表的增删改查:CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)。

2024-07-09 19:13:11 1607 11

原创 MySQL篇四:表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个: null/not null,default,comment,zerofill,primary key,auto_increment,unique key。约束的本质是通过技术手段,倒逼程序员加入正确的数据。反过来站在MySQL的视角,凡是插入进来的数据,都是符合数据约束的。

2024-07-08 16:13:57 923 1

原创 MySQL篇三:数据类型

  数据类型分类:  注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。  基本语法:  bit使用的注意事项:  语法:  float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。比如说先就是只能插入-99.99 ~ 99.99,但是实际上的范围是-99.994 ~ 99.994。decimal(5,2) 表示的范围是 -999.99

2024-07-06 19:18:58 620 1

原创 强化训练:day13(牛牛冲钻五、最长无重复子数组、重排字符串)

1. 牛牛冲钻五2. 最长无重复子数组3. 重排字符串前两个题都是由固定的算法思路,进行专项训练就可以了,至于第三个题那么就只能看个人的想法了。不过多做题肯定是没错的,希望大家可以继续练习下去。那么第十三天的内容就到此结束了,如果大家发现有什么错误的地方,可以私信或者评论区指出喔。我会继续坚持训练的,希望能与大家共同进步!!!那么本期就到此结束,让我们下期再见!!

2024-07-06 19:18:34 421

原创 MYSQL篇二:数据库的操作

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci。这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

2024-07-05 13:49:51 770 4

原创 MYSQL篇一:数据库基础

存储数据用文件就可以了,为什么还要弄个数据库?一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力(用户角度)。对数据存储的一套解决方案,你给我字段或者要求,我直接给你结果。文件的安全性问题。文件不利于数据查询和管理。文件不利于存储海量数据。文件在程序中控制不方便。MySQL是一套给我们提供数据存取的网络程序。数据库一般是指,在磁盘或者内存中存储的特定结构组织的数据 - — 将来在磁盘上存储的一套数据库方案。数据库服务— mysqld。磁盘内存。

2024-07-03 18:57:26 1113 4

原创 Linux:网络基础1

在早期的计算机发展中,一开始其实是一个个独立的设备,通俗来说就是电脑和电脑之间不是像现在这样可以互相传输数据的,只能通过,比如将这个电脑上的数据通过软盘拷贝下来,再到另一台电脑下载。而有人的参数,效率定然是低下的,因此就有了网络,通过网络来实现不同设备之间的数据传输。协议本质就是一种约定。

2024-07-02 19:22:34 1831 4

原创 强化训练:day12(删除公共字符、两个链表的第一个公共结点、mari和shiny)

1. 删除公共字符2. 两个链表的第一个公共结点3. mari和shiny

2024-06-05 17:16:20 426 2

原创 C++特殊类的设计

有时间在特定场景,我们需要特殊从类来处理事务,比如这里类只能有一个实例化对象。其中的单例模式是重点,很多面试都会提问到,要做到手撕单例模式。如果大家发现有什么错误的地方或者有什么问题,可以私信或者评论区指出喔。我会继续深入学习C++,希望能与大家共同进步,那么本期就到此结束,让我们下期再见!!!

2024-06-05 17:15:28 643 7

原创 强化训练:day11(游游的水果大礼包、 买卖股票的最好时机(二)、倒置字符串)

1. 游游的水果大礼包2. 买卖股票的最好时机(二)3. 倒置字符串

2024-05-28 15:52:40 751 3

原创 Linux:线程

本章所讲的线程原理,仅仅是Linux下的线程。在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“ 一个进程内部的控制序列 ”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化。透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。课本:线程是比进程更加轻量级的一种执行流 / 线程是在进程内部执行的一种执行流。

2024-05-28 15:51:41 1153 4

原创 强化训练:day10(最长回文子串、买卖股票的最好时机(一)、过河卒)

做题链接:1. 最长回文子串2. 买卖股票的最好时机(一)3. 过河卒dp

2024-05-21 16:53:10 325 2

原创 C++智能指针

智能指针也是C++11新增的语法,它主要是用来处理数据释放的问题。什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。// 1.内存申请了忘记释放// 2.异常安全问题Func();

2024-05-21 16:52:23 902 4

原创 强化训练:day9(添加逗号、跳台阶、扑克牌顺子)

1. 添加逗号2. 跳台阶3. 扑克牌顺子

2024-05-14 20:11:02 794 4

原创 强化训练:day8(求最小公倍数、数组中的最⻓连续⼦序列、字⺟收集)

1. 最小公倍数2. 数组中的最⻓连续⼦序列3. 字⺟收集

2024-05-14 20:10:14 755 4

原创 C++异常

我们平时写代码可能都会出很多的错误,那么有什么方法可以帮助我们找到这些错误呢?实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了。异常总体而言,利大于弊,所以工程中我们还是鼓励使用异常的。另外OO的语言基本都是用异常处理错误,这也可以看出这是大势所趋。如果大家发现有什么错误的地方或者有什么问题,可以私信或者评论区指出喔。

2024-05-13 21:02:16 864 8

原创 强化训练:day7(字符串中找出连续最长的数字串、岛屿数量、拼三角)

1. 字符串中找出连续最长的数字串2. 岛屿数量3. 拼三角对于第一题,当时使用一模一样的代码,不知道为什么当时写的时候测试用例总是只能过百分之80,今天测试的时候就成百分之百了……挺无语的。不过今天的重点还是第二题,dfs,大家可以通过画图来理解整个解题思路噢。那么第天七的内容就到此结束了,如果大家发现有什么错误的地方,可以私信或者评论区指出喔。我会继续坚持训练的,希望能与大家共同进步!!!那么本期就到此结束,让我们下期再见!!

2024-05-13 21:01:42 409

原创 强化训练:day6(大数加法、链表相加、大数乘法)

今天的问题主要是处理 "大数加法"问题。大数加法链表相加大数乘法。对于大数加法这部分的知识来说,我觉得还是比较重要的,因为在现实中总会出现很大的数字,仅靠long long是无法存储的,那么就需要使用这种方式来处理数据。

2024-04-30 16:30:42 475 2

原创 C++11

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。

2024-04-30 16:29:25 743 5

空空如也

空空如也

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

TA关注的人

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