自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

皮蛋的Bk

哈哈,加油哦!

  • 博客(139)
  • 收藏
  • 关注

原创 【优先级队列】Leetcode 最后一块石头的重量

根据题目的意思,为了寻找到本次数组中的最大的两个值,我们需要使用一个数据结构:堆,使用大堆,每一次出两个数据,这两个数据就是当前数组中的两个最大值,之后在按照题目的意思进行模拟即可

2024-05-13 15:12:08 392

原创 【二叉树】Leetcode 在每个树行中找最大值

这道题的重点在于怎么能够保存这一层的节点,并求出层节点的最大值:我们需要使用一个queue,每一次出队列的时候将当前队头结点的左右子树入队列(这里就是将下一层的结点入队),并判断每一次出队列结点的值是否是最大的(每一次出队列的节点就是当前层的节点)

2024-05-13 14:44:50 192 1

原创 【二叉树】Leetcode 二叉树的锯齿形层序遍历

这道题其实是和N叉树层序遍历是一样的,只不过是要求每一次的遍历的方向不一样;注意:这一次的使用的队列不能够是queue了,因为需要从后往前遍历容器,所以就可以使用vector作为队列

2024-05-11 11:19:36 278

原创 【二叉树】Leetcode N 叉树的层序遍历

在做层序遍历的时候由于它的每一个结点是有val + vector child组成,所以在做层序遍历的时候需要考虑它每一层结点的个数,那我们就可以使用一个queue保存每一层的结点;那么我们在做第一层的时候,这样很简单,第一层用完怎么做呢?我们在准备第二层结点的时候,就需要将第一层结点提取出来,然后将第一层节点pop出去,现在的时候,第一层的vector ret已经出现的,但是我们queue还是没有处理的,所以在添加当前节点的val之后就需要遍历结点的child vector,将它的下一层结点放到queue中

2024-05-11 10:41:11 282

原创 【栈】Leetcode 字符串解码

这道题有四种情况:1.遍历的时候遇到数字,我们计算并保存数字,将它加入到数字栈中;2.遍历的时候遇到[,我们就把字符保存,加入到字符栈中;3.当遇到],我们及时按照数字栈的栈顶元素的数字,添加字符栈中栈顶元素的次数;4.如果当前遍历的时候上述情况什么都不是,说明是正常的字符串,直接在字符栈的栈顶中添加即可

2024-05-10 15:26:55 243

原创 【栈】Leetcode 验证栈序列

在这里就只需要模拟一下这个栈的出栈顺序即可:使用一个stack,每次让pushed里面的元素入栈,如果当前栈顶的元素等于poped容器中的当前元素,因此就需要让栈顶元素出栈,poped的遍历位置往后移动一位

2024-05-10 14:43:30 203

原创 【项目】Boost搜索引擎

现在市面上出现很多搜索引擎,比如:百度、Google、Bing等等,它们都是全网性搜索而我做得项目就像cplusplus网站中搜索C++的相关知识一样,同样做的是站内搜索,它的搜索更垂直。

2024-05-08 16:18:45 1250 1

原创 【栈】Leetcode 比较含退格的字符串

使用栈模拟,但遇到#字符就让栈顶元素出栈,但是在写的过程中有两点需要注意:当#出现在第一个位置,需要特殊处理一下;当栈为空的时候,还出现#字符需要特殊处理一下。

2024-05-07 09:04:24 257

原创 【栈】Leetcode 1047. 删除字符串中的所有相邻重复项

使用栈这个数据结构,每一次入栈的时候观察此时的字符和当前栈顶字符是否相等,如相等:栈顶出栈;

2024-05-07 08:44:58 349

原创 【字符串】Leetcode 43. 字符串相乘

使用最简单的算法:模拟

2024-05-06 20:53:06 287

原创 【字符串】Leetcode 二进制求和

注意:循环遍历字符串的时候,循环的边界不能够是>=0,因为需要向前处理进位,当i ==0的时候,i - 1就越界了,所以等循环完成需要单独判断第一个位置的字符情况,需要进位的就尾插字符串即可。

2024-05-06 19:40:14 374

原创 【字符串】Leetcode 最长回文子串

i==j说明一个字符肯定是回文i+1 == j也说明一个字符是回文i+1 < j说明需要判断[i+1, j-1]这一段区间是否是回文此时我们就可以明白s[i] == s[j]它仅仅判断的是左右两个端点

2024-05-05 10:52:25 413

原创 【哈希表】Leetcode 14. 最长公共前缀

我们使用当前第一个字符串中的与后面的字符串作比较,如果第一个字符串中的字符没有出现在后面的字符串中,我们就直接返回;反之当容器中的所有字符串都遍历完成,说明所有的字符串都在该位置出现了当前字符,所以遍历完成之后就像ret中添加当前的字符

2024-05-05 09:57:41 388

原创 【哈希】Leetcode 219. 存在重复元素 II

【代码】【哈希】Leetcode 219. 存在重复元素 II。

2024-04-29 17:13:23 360

原创 【哈希】Leetcode 217. 存在重复元素

使用set集合完成元素的存储,当我们将当前元素插入到集合单中,如果insert的返回值的pair.second等于false说明当前元素已经存在,反之元素在集合中存在

2024-04-29 15:45:54 197

原创 【哈希】Leetcode 面试题 01.02. 判定是否互为字符重排

直观的想法:我们找到一个字符串的全排列,然后对比当前的排列是否等于另一个字符串。如果两个字符串如果互为排列,所以我们知道两个字符串对应的字符出现的个数相同,那么就可以排列成另一个字符串

2024-04-28 15:22:17 304

原创 【哈希】Leetcode 两数之和

我们希望让这个数组有序,然后再寻找的时候可以很快的找到是否存在这个target - nums[i],这里需要返回的是下标,所以需要一个数据结构保存key:nums AND val:index,因此我们想到了哈希表

2024-04-28 15:15:43 474

原创 【链表】Leetcode K个一组翻转链表

翻转n个链表我们使用头插法,注意:当第一组链表翻转完成之后,我们就不能在使用上一次的头插法的头结点了,就需要在新的链表的尾结点使用头插法,所以我们每一次在翻转当前组链表的时候需要记录翻转完成之后的尾结点,这个尾结点特别好找,就是当前链表组的首节点,使用prev变量记录下来就行。

2024-04-26 20:41:39 430

原创 【链表】Leetcode 合并k个升序链表

注意:遍历一次vector后现在的队列里面全保存的当前的首节点,所以我们之后不在需要遍历vector了,因为取出当前的top之后,我们让当前top节点的之后向后移动一位,然后再push到堆里,只有当堆为空的时候才是所有的链表都遍历完成的时候。

2024-04-26 20:09:50 412

原创 【链表】Leetcode 重排链表

1.使用快慢指针将链表分成两部分 2.将后半部分的链表逆置 3.使用双指针将连个链表分别连接结点在一起

2024-04-24 20:36:52 381

原创 【归并】Leetcode 计算右侧小于当前元素的个数

【代码】【归并】Leetcode 计算右侧小于当前元素的个数。

2024-04-24 20:14:55 144

原创 【链表】Leetcode 两两交换链表中的结点

只需要模拟这个过程就行了,但是需要注意空指针的问题,特别是nnext指针。

2024-04-22 20:56:11 425

原创 【链表】Leetcode 两数相加

我们这里设置一个头结点,然后遍历两个链表,使用一个flag记录相加的结果和进位,如果两个链表没有走到最后或者进位不等于0,我们就继续遍历处理进位;如果当前的链表都遍历完成了,判断当前的进位是否>10,然后处理是否需要添加进位结点

2024-04-22 20:39:22 401

原创 【归并】Leetcode 交易逆序对的总数

还是使用分治算法的思想:我们可以先将数组分成两块,先求出左边部分的逆序对,右边部分的逆序对和一左一右的逆序对,三个数量相加就是当前数组中的所有逆序对;其次我们在求子数组逆序对的时候,可以把排序添加上,如果添加上排序,那么求左右部分的逆序对的时候就会很方便,只需要将下标相减即可

2024-04-21 09:34:08 346

原创 【归并】Leetcode 排序数组

使用归并算法排序数组,我们先在数组中寻找一个mid点,然后把数组分成了两部分,我们先排左部分,排左边部分的时候有需要将当前的子数组分成两部分,继续循环,直到当前子数组的长度为1的时候,我们直接返回,排右边部分;将排好的左右部分进行有序数组的合并,合并完成之后将子数组填充到当时一段区间中的原数组当中去

2024-04-21 09:04:03 542

原创 【分治】Leetcode 库存管理 III

使用数组分三块思想,划分数组,求出元素

2024-04-19 16:45:45 196

原创 【分治】Leetcode 数组中的第K个最大元素

堆排序:1. 寻找最后一个节点的父亲,依次向上遍历,完成小堆的建立;2. 从最后一个元素开始,和堆顶的数据做交换,此时最小的数据在对后面,然后对剩下的区间重新完善小堆

2024-04-19 16:23:43 837

原创 【分治】Leetcode 排序数组

我们这里使用三指针,将数组分成三块:key,如果当前指针指向的数字key,就让swap(nums[--right], nums[i])。然后继续对key的区间进行排序

2024-04-18 20:31:09 206

原创 【分治】Leetcode 颜色分类

如果当前的nums[i] == 0,我们就让nums[++left] 和 nums[i++]位置上的数字做交换,这里的i是可以向前移动的,因为++left位置上的数字一定是1。如果nums[i] == 2, swap(nums[–right], nums[i])如果当前的nums[i] == 1,i++即可。

2024-04-18 17:28:38 334

原创 【模拟】Leetcode 数青蛙

【代码】【模拟】Leetcode 数青蛙。

2024-04-17 22:11:39 170

原创 【模拟】Leetcode 外观数列

所谓「外观数列」,其实只是依次统计字符串中连续且相同的字符的个数。依照题意,依次模拟即可

2024-04-17 21:33:59 302

原创 【模拟】Leetcode Z 字形变换

【代码】【模拟】Leetcode Z 字形变换。

2024-04-16 08:53:32 246

原创 【模拟】Leetcode 提莫攻击

前后的两个数字之间的关系要么是相减之差 >= 中毒时间 ,要么反之。

2024-04-16 08:33:53 248

原创 【模拟】Leetcode 替换所有的问号

这里有两个特殊情况:如果?在第一个位置,只需要判断后面的符号;在最后一个位置,只需要判断前面的符号。

2024-04-15 22:38:22 395

原创 【位运算】Leetcode 消失的两个数字

我们将这两个数组异或在一起,最后的结果就是a ^ b(缺失的两个数字)的结果,这两个缺失的数字一定是不相同的,所以我们就寻找他们第一个比特位是1的那个位置,异或的原理是:相同为0, 不同为1,按照这个位置将数组划分成两部分,一部分是这一位上是1的,另一部分是这一位上是0的,然后将两个数组的两个部分异或在一起,就得到缺失的两个数字。

2024-04-15 22:26:18 565

原创 【位运算】Leetcode 只出现一次的数字 ||

nums中要么一个数字出现三次,一个数字出现一次,按照比特位来说只可能出现上面的四种情况: 3n个0 + 0 或者 3n个0 + 1 或者 3n个1 + 0 或者 3n个1 + 1,它们相加的结果依次是0, 1, 3n, 3n+1,让当前这个比特位相加的结果%3可以的看出结果和只出现一次的数字上面的比特位一样

2024-04-14 11:40:58 218

原创 【位运算】Leetcode 两整数之和

异或的本质就是无进位相加,但是我们需要处理进位,就需要知道哪一位上有进位,再让无进位相加的结果 + 进位即可,在重复这个过程,当进位等于0的时候,说明相加的过程已经结束

2024-04-14 11:11:20 156

原创 【位运算】Leetcode 丢失的数字

按照上面的代码,比如当前在[0,4]区间中寻找确实的数字,首先将ret = 0 ^ 1 ^ 2 ^ 3 ^ 4;之后,再让ret = ret ^ 0 ^ 1 ^ 3 ^ 4;得到ret = 2;

2024-04-13 10:56:48 214

原创 【位运算】Leetcode 判定字符是否唯一

优化思路:可以使用位图来充当Hash表,过程中只需要判断某一位是否为1,将某一位置1的操作。

2024-04-13 10:44:30 184

原创 【Linux】应用层协议:HTTP

在之前的文章中我们实现了一个网络版本的计算器,在那个计算器中揉合了协议定制以及序列化反序列化的内容,我们当时也自己定制了一套协议标准,比如请求和响应的格式应该是什么?如何读到一个完整的报文?支持的运算符有什么?等等我们都有自己的标准。那么有没有其他大佬针对应用层的某些使用场景,已经提前给我们写好了协议软件呢?有,这个协议就是HTTP协议,我们当时的协议仅仅是针对计算场景所设计的,而HTTP协议主要是针对web场景所设计的。

2024-04-13 10:05:37 2293

空空如也

空空如也

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

TA关注的人

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