自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法 | 链表部分总结

链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这就造成了头结点的尴尬,因为头结点没有前一个节点了。建议大家先学迭代法,然后再看递归法,因为递归法比较绕,如果迭代还写不明白,递归基本也写不明白了。这道题目可以说是链表的比较难的题目了。但代码却十分简洁,主要在于一些数学证明。使用双指针来找到两个链表的交点(引用完全相同,即:内存地址完全相同的交点)反转链表是面试中高频题目,很考察面试者对链表操作的熟练程度。来移除链表倒数第N个节点。虚拟头结点 和 双指针法。

2024-07-20 18:41:49 135

原创 代码随想录算法day04| 链表part2 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II

可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。为什么fast 走两个节点,slow走一个节点,有环的话,一定会在环内相遇呢,而不是永远的错开呢。

2024-07-20 18:31:26 639

原创 代码随想录算法day03| 链表part1 | 203.移除链表元素,707.设计链表,206.反转链表

这样移除了一个头结点,是不是发现,在单链表中移除头结点 和 移除其他节点的操作方式是不一样,其实在写代码的时候也会发现,需要单独写一段逻辑来处理移除头结点的情况。那么因为单链表的特殊性,只能指向下一个节点,刚刚删除的是链表的中第二个,和第四个节点,那么如果删除的是头结点又该怎么办呢?移除头结点和移除其他节点的操作是不一样的,因为链表的其他节点都是通过前一个节点来移除当前节点,而头结点没有前一个节点。如果再定义一个新的链表,实现链表元素的反转,其实这是对内存空间的浪费。

2024-07-20 16:10:08 529

原创 代码随想录算法| 链表先导知识 |链表理论基础

链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链表的入口节点称为链表的头结点也就是head。接下来说一说链表的定义。链表节点的定义,因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以大家都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。// 结点的值int val;// 下一个结点。

2024-07-19 20:37:30 651

原创 代码随想录算法 | 数组部分总结

3、双向指针法:将其中一个指针(一般是left指针)定义为指向最终返回的数组的最后一个元素的下标,同时判断此时指向元素是否为指定元素,另一个指针(right)不断寻找非指定元素,覆盖给left指针的指定元素,最终完成left指针指向下标之前的数组为所求数组,即全非指定元素数组。一个指针指的是最终返回的没有指定元素的数组的最后一个元素下标,另一个指针去搜索不是指定元素的元素;数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力。2、数组的内存空间地址是连续的——>

2024-07-19 20:07:07 530

原创 代码随想录算法day02| 数组part2|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

数组算法part02

2024-07-18 22:08:10 858

原创 代码随想录算法day01| 数组part1|704. 二分查找、27. 移除元素

也就是[left, right] (这个很重要非常重要)while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <=if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1}else{return -1;时间复杂度:O(logn)空间复杂度:O(n)

2024-07-17 11:09:17 580

原创 写代码一些会让同事感谢叫爸爸的注释

写代码一些会让同事感谢叫爸爸的注释

2024-04-19 15:47:23 158

空空如也

空空如也

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

TA关注的人

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