自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Leetcode.

把magazine字符信息存储起来,在遍历ransomNote时进行查找,不符合条件就返回false;根据题目要求,哈希表使用map,定义为字母与字母对应的出现次数;把题目抽象一下,就会发现本题考察的是子集问题;即一个字符串是否是另一个字符串的“子串”;查找时每查找一次自减一次;

2023-11-07 08:44:52 42

原创 Leetcode.四数相加 II

对于两数相加之和,我的常用解法是存储一个数组,遍历另一个数组,同时查找存储的数组是否有满足条件的值;这里把nums1和nums2的所有和作为一个数组,剩余两个数作为一个数组;根据题目,哈希表使用map,定义为两小数组之和的值与同一值出现的次数。缩小问题规模是编程常用的思维,即把四个数相加拆解成多次两个数相加;四个数组且只返回个数,暴力法很容易想到,即。四重循环复杂度太高了!

2023-11-07 08:32:36 47

原创 Leetcode.1. 两数之和

值得注意的是,查找与存储的顺序有严格的要求:查找先于存储!如果先存储,则可能查找到自己!两数之和,梦开始的地方,就像abondan一样,直接让我abondan。根据题目,稍加思考, 哈希表使用map,存储数与下标,因为返回值为下标。遍历一次数组,对于每个元素i,想查找数组中是否存在target-i。把两数之和放在第一题,对于代码小白非常不友好……提到查找,就会想到哈希表!

2023-11-05 21:45:58 95

原创 Leetcode.202快乐数

初看这道题时 ,我以为数学的魔爪已经伸入简单题里面了,看来几分钟,果断放弃。看过题解之后,发现自己成小丑了。所需要的数学已经放题目里面了!题目把最重要的两个条件加粗了,用心读题,加上敏锐的思考,发现这个过程就两种结果:无限循环与结果为一,即false与true。查找是否重复,不重复就记录平方和,重复就返回false,找到1返回true。

2023-11-05 21:31:28 36

原创 Leetcode.349. 两个数组的交集

哈希表存储数组nums1,遍历nums2,查找哈希表,为了确保返回u元素唯一,我们使用哈希表进行去重操作,因为哈希表保证键的唯一性。模拟寻找交集过程:遍历存储数组nums1,遍历nums2,对当前元素进行查找,查看nums1中是否有此元素。涉及查找,是哈希表!使用set进行单值存储,哈希表存储当前元素。返回两数组的交集,且保证元素唯一。

2023-11-05 19:58:35 23

原创 Leetcode.242.有效的字母异位词

一般思路是将一个存储起来,遍历另一个。在遍历另一个过程中,我发现每个字母出现次数在变,所以应该满足th[i]<=sh[i],否则判定为不是异位词。如果一个串是另一个的子序列则满足上述条件但不是异位词。异位词,简单的查找,并且保证每个字母出现次数相同。涉及哈希表相关操作,哈希表定义为字母对应出现次数。

2023-11-05 19:44:11 23

原创 Leetcode.142.环形链表II

快慢指针的爱恨情仇!

2023-10-29 17:50:04 653

原创 Leetcode.面试题02.07. 链表相交

思考一下倒着为什么能找到?因为倒着找保证了A,B链表(因为距离第一个相交节点的距离不同。那我们就要创造条件!A链表用于存储,B链表一个一个对照就可以了。如果知道了两个链表的长度,减去多余部分,就可以齐头并进了!如果使用哈希表,空间就不是o(1)了。做链表题,没事想想双指针!你能否设计一个时间复杂度。

2023-10-29 17:21:52 43

原创 Leetcode.19.删除链表的倒数第N个节点

逆向思维,假设我们找到了,然后用慢指针slow表示了倒数第n+1个节点。此时快指针如何是如何告诉我们找到了倒数第n个节点?题目要求我们删除倒数第n个节点,我们自然需要找到倒数第n个节点,同时,把倒数第n+1个节点和n-1个节点进行连接,这样就达到删除的效果了。回推初始状态,自然是慢指针slow指向开始,快指针指向之后n+1个节点。这里用快慢指针进行查找,我们希望达成的目标是找到并且表示n+1个节点。此时我们发现快慢指针之间的距离是?没错,都是n+1个节点!灵光一现,让快指针指向链表结尾空指针就可以啦!

2023-10-29 17:04:31 28

原创 Leetcode.24. 两两交换链表中的节点

对于当前操作节点,可以从虚拟头节点开始,也可以从题目head节点开始,但是虚拟头节点更方便,所以我从虚拟头节点开始,声明为cur(current node)。在循环体中交换节点,即需要当前节点cur的下一个节点(称为第一个节点),第二个节点,第三个节点进行连接。题目要求节点两两交换,即以两个节点为一组,进行循环,而循环内部即为节点交换!关于循环问题,可以用循环来做,也可以用递归来做。对于要交换节点,要保证存在两个节点(循环条件)。别忘了把cur变成cur->next->next。

2023-10-29 16:37:56 18

原创 Leetcode.203.移除链表元素

移除元素,简单的链表操作,

2023-10-28 21:21:39 45 1

原创 Leetcode.707.设计链表

设计链表类,基础的链表操作,设置一个。

2023-10-28 21:18:17 26 1

原创 Leetcode. 203.移除链表元素

如示例1:对于节点1,需要结点2的next指向节点 1,而节点2的next指针之前指向节点3,又该如何处理?需要节点3指向节点2!依次递推,最终需要节点5指向节点4,节点4指向节点3……我们只要了头节点,自然需要进行反转链表的操作,即让孩子节点指向自己,让自己指向空节点。自然是最后一个节点,让最后一个节点作为反转后的新的头节点。2.向孩子要答案后,综合1,2,返回给父亲节点的则是:以当前节点为尾节点的反转后的链表头节点。对于这道题:1.对于每个节点,向孩子要答案,然后经过操作后返回给父亲节点。

2023-10-28 21:13:52 668 1

原创 Leetcode.59.螺旋矩阵II

在二维数组中[i][j],右代表 j++;数组越界或者已经覆盖过的数组。每一圈都是以右下左上为方向进行模拟的,每次转变状态后进行取余运算(%4);4种状态用1,2,3,4表示;模拟螺旋,每次自增一。

2023-10-27 15:34:11 473 1

原创 Leetcode.209. 长度最小的子数组

sum<target时,需要加入新元素, 因为要求连续,新元素自然就是当前数组的后面相邻元素 sum>=target时,需要删除旧元素, 因为要求连续,旧元素自然是当前数组最前面的元素。所以,很自然的想到需要两个指针,前面的指针用于删除元素,后面的指针用于加入元素。同时需要一个变量维护数组(窗口)的长度。当sum>=target时,维护最小长度后删除旧元素,在进行判断sum>=target;则此数组一定具有的属性为数组和sum,对于目标值target和数组和sum,

2023-10-27 15:20:30 21 1

原创 Leetcode.977.有序数组的平方

经过观察发现,题目给的数组两头平方后大,中间小。从两头开始,选择较大的数进行填充,方便初始化!新建数组ret,对ret进行填充,可以从大开始填充,也可以从小开始填充,循环体:填充ret数组,择大进行填充,同时移动指针。题目给了非递减数组,要求平方后排序为非递减数组。初始化:遍历数组,对元素平方。

2023-10-27 14:58:52 29

原创 Leetcode27. 移除元素(双指针法)

双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。换言之,双指针法充分使用了数组有序这一特征,从而在某些情况下能够简化一些运算。总之:双指针分为同向和反向,处理有某一特征数据,用于简化运算。对于Leetcode27.移除元素,要求修改原数组,并返回有效长度很明显的快慢指针:快慢指针均从下标0开始,慢指针用于填充数组,快指针用于寻找有效元素,

2023-10-27 12:42:15 891

原创 leetcode.704. 二分查找(三种解法!)

二分查找(三种解法!)如何初始化?循环条件?如何赋值left,right?这里通通有!

2023-10-26 01:07:14 80

空空如也

空空如也

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

TA关注的人

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