自定义博客皮肤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

哈哈,加油哦!

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

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

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

2024-04-29 17:13:23 270

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

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

2024-04-29 15:45:54 121

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

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

2024-04-28 15:22:17 297

原创 【哈希】Leetcode 两数之和

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

2024-04-28 15:15:43 467

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

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

2024-04-26 20:41:39 415

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

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

2024-04-26 20:09:50 408

原创 【链表】Leetcode 重排链表

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

2024-04-24 20:36:52 369

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

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

2024-04-24 20:14:55 138

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

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

2024-04-22 20:56:11 418

原创 【链表】Leetcode 两数相加

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

2024-04-22 20:39:22 395

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

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

2024-04-21 09:34:08 339

原创 【归并】Leetcode 排序数组

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

2024-04-21 09:04:03 537

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

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

2024-04-19 16:45:45 191

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

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

2024-04-19 16:23:43 828

原创 【分治】Leetcode 排序数组

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

2024-04-18 20:31:09 200

原创 【分治】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 322

原创 【模拟】Leetcode 数青蛙

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

2024-04-17 22:11:39 165

原创 【模拟】Leetcode 外观数列

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

2024-04-17 21:33:59 294

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

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

2024-04-16 08:53:32 240

原创 【模拟】Leetcode 提莫攻击

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

2024-04-16 08:33:53 242

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

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

2024-04-15 22:38:22 388

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

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

2024-04-15 22:26:18 558

原创 【位运算】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 209

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

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

2024-04-14 11:11:20 149

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

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

2024-04-13 10:56:48 211

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

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

2024-04-13 10:44:30 183

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

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

2024-04-13 10:05:37 2265

原创 【前缀合】Leetcode 连续数组

细节问题:1. 这里的哈希表的value存的是下标,因为需要找到最长的子数组的长度 2. 遇到重复的,不用将当前的位置和sum更换进Hash,因为在此时的[0,i]区间里已经寻找到了一段[0,j]区间的和也等于sum,所以左边的长度越小,就能找到结果

2024-04-12 15:55:57 286

原创 【前缀合】Leetcode 和可被 K 整除的子数组

0~i这一段区间是sum,为了寻找一段区间能够被k整除,所以看一下(sum - x) % k是否能被整除,由同余定理得出:sum % k == x % k,因此我们只需要寻找这一段区间中有几个余数等于sum % k的属于需要将负数取余情况代入。

2024-04-12 15:20:39 221

原创 【前缀合】Leetcode 和为k的子数组

前面滑动窗口里面有一道题和这个题很相似,它是求出和为k的最短子数组的长度,但是这道题不能使用滑动窗口,因为虽然找到一段子数组的和等于k,但是这道题里面存在0和负数,可能这一段区间里面还有一段子数组也等于k。

2024-04-11 16:47:15 325

原创 【前缀积】Leetcode 除自身以外数组的乘积

我们可以使用两个空间保存当前位置的左边积和右边积,需要注意的地方初始的dp表需要初始化为1,如果是0则无法得到结果,因为此处是乘法

2024-04-11 16:16:00 257

原创 【前缀合】Leetcode 寻找数组的中心下标

【前缀合】Leetcode 寻找数组的中心下标。

2024-04-10 17:41:02 234

原创 【前缀合】牛客网 二维前缀和

因为数组的下标是从1开始的,我们设置dp表的含义也就是当前位置到[1][1]这一段区域的总和,因此我们需要将dp表的扩建和nums表的扩建容量都设置成多加一行和一列,这样两个数组的下标才可以对应。

2024-04-10 17:21:56 305

原创 【前缀合】牛客网 前缀和

本题的意思就是:第一行输入数组长度 和 查询次数;数组的下标从1开始; 第二行输入数组数据; 剩下的行数输入计算的下标范围

2024-04-09 23:41:29 122

原创 【二分查找】Leetcode 点名

【代码】【二分查找】Leetcode 点名。

2024-04-09 23:05:30 335

原创 【二分查找】Leetcode 寻找旋转排序数组中的最小值

我们可以发现旋转后的数组是有这样一个顺序特征:1.要么是旋转长度次,刚好还是原来的数组2.要么一定存在一段一段的升序区间,再其中一段的升序区间中就存在最小值。

2024-04-08 17:04:52 253

原创 【二分查找】Leetcode 寻找峰值

我们按照顺序判断每个数字是否是当前的峰值,如果是直接返回,如果不是继续寻找。如果寻找的数组末尾还没有寻找到,那么就是数组的最后一个元素。如果当前的nums[i] < nums[i+1] 说明i左侧不一定会出现峰值,因为它是上升趋势,峰值一定会出现在i+1的右侧区域。反之,如果当前的nums[i] > nums[i+1] 说明i左侧一定会出现峰值,但是i+1右侧不一定会出现,因为它是下降趋势的。又因为题目中说明没有一个合理的i,存在num[i] == nums[i+1],因此我们不需要对此情况进行判断。

2024-04-08 15:52:49 301

原创 【二分查找】Leetcode 山脉数组的峰顶索引

这到题使用暴力枚举的查找方法发现这段数组是有二段性的,峰顶左边的一段区间是一段递增区间,右边的一段区间是一段递减区间

2024-04-07 15:02:05 212

原创 【二分查找】Leetcode 搜索插入位置

注意这道题有一个细节地方需要注意:如果现在target没有在nums中出现,并且目前的target是nums中最大的那一个,此时我们使用的二分算法只能够寻找到数组的最后一个索引位置。因此,需要我们手动在最后判断一下,如果最后一个索引位置的数字 < target,那么就需要返回最后一个索引位置+1的索引位置。

2024-04-07 14:36:20 247

原创 【Linux】协议定制+序列化和反序列化

通过微信聊天的例子,我们知道了,协议其实就是结构化数据,是客户端和服务端都知道的一种结构化数据,所以需要创建Request和result两个结构上图所示代码是Request,包含两个操作数x和y,以及操作符op,运算表达式的形式如1+1。网络请求Request是由客户端发送的,但是网络端也必须要知道Request中的内容,如x就表示第一个操作数y就表示第二个操作数,op表示计算的类型。Request就是客户端和服务端之间的一个协议。

2024-04-06 21:27:39 1663

空空如也

空空如也

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

TA关注的人

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