自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Day12】代码随想录 | 环形链表Ⅱ

本文介绍了如何检测链表中的环并找到环的入口。使用快慢指针法判断是否有环:快指针每次走两步,慢指针每次走一步,若相遇则说明有环。找到相遇点后,通过数学推导可知,从链表起点和相遇点同时出发的两个指针最终会在环入口相遇。代码实现简洁,时间复杂度为O(n),空间复杂度为O(1)。

2025-08-30 16:03:58 678

原创 【Day11】代码随想录 | 链表相交

先求出两个链表的长度,并求出两个链表长度的差值,然后让两个指针对齐。接着比较两个指针是否相同,不同就往后接着移动,移动到最后还是没找到就返回空指针。步,如果有交点的话,它们会在相交点“同步”;每次各走一步,若指针到达链表尾,则跳到另一条链表的头。因为各自补上了对方的长度,所以必然在相交点对齐,或者一起走到。如果是数值相等的话输出答案应该为。,但是要求是指针相等,所以答案为。LeetCode 链接。两种做法时间复杂度都是。

2025-08-29 15:35:10 316

原创 【Day10】代码随想录 | 删除链表的倒数第 N 个节点

本文介绍了删除链表倒数第N个节点的两种解法。第一种朴素解法通过两次遍历,先获取链表长度再定位删除节点;第二种双指针法仅需一次遍历,使用快慢指针定位待删除节点的前驱节点。两种方法都采用了虚拟头节点简化操作,双指针法更具效率优势,时间复杂度均为O(n)。

2025-08-28 14:15:22 160

原创 【Day9】拓展:K 个一组翻转链表

本文介绍了LeetCode题目"K个一组翻转链表"的解题思路。该题结合了反转链表和节点交换两个知识点,通过分组处理实现链表翻转。关键步骤包括:1)计算链表长度;2)使用循环分组处理;3)每组内部进行链表反转;4)处理组间连接关系。文中提供了Java实现代码,并强调了虚拟头节点和先驱指针的使用技巧,以及需要注意的边界条件处理。算法时间复杂度为O(n),空间复杂度为O(1)。

2025-08-27 17:35:08 323

原创 【Day9】代码随想录 | 两两交换链表中的节点

摘要 LeetCode题目"两两交换链表中的节点"要求成对交换链表节点。使用虚拟头节点简化操作,避免特殊处理头节点。核心思路是通过临时指针temp保存下一组节点信息,依次调整节点指向。循环条件需判断curr.next非空以防止空指针异常。时间复杂度O(n),空间复杂度O(1)。关键点在于正确维护节点间的连接关系,尤其要注意循环终止条件的设置。

2025-08-27 17:09:36 268

原创 【Day8】代码随想录 | 反转链表

该文章介绍了LeetCode反转链表问题的两种解法:双指针法和递归法。双指针法通过维护prev和curr指针在原链表上直接反转,作者指出了自己初始版本中的错误点(prev初始化和返回值问题),并给出了正确代码。递归法则分为两种实现:一种模拟双指针过程,另一种从后向前递归处理节点。文章通过对比不同解法,清晰地展示了链表反转的核心思路与实现细节,代码示例完整且配有注释说明。

2025-08-26 13:15:05 227

原创 【Day7】代码随想录 | 设计链表

本文总结了设计链表时常见的错误和正确解法。作者最初尝试使用虚拟头节点实现,但因同时定义真实头节点和虚拟头节点导致遍历边界错乱。正确解法应仅保留虚拟头节点,统一从dummy.next开始遍历。关键点包括:1)插入操作先连接新节点next再修改前驱节点;2)头尾插入可复用addAtIndex方法;3)删除时需严格判断index范围。最终代码通过内部类ListNode实现,size维护链表长度,虚拟头节点简化边界处理。这种设计模式有效避免了空指针异常,使链表操作更统一规范。

2025-08-25 18:17:59 207

原创 【Day6】代码随想录 | 移除链表元素

本文总结了LeetCode上移除链表元素的三种解法:1)原链表处理,需区分头节点和非头节点的删除;2)虚拟头节点法,统一删除操作;3)递归解法,通过递归处理后续节点并判断当前节点是否需要删除。每种方法都分析了时间/空间复杂度,并指出易错点,如空指针异常处理、返回节点选择等。通过示例演示了递归解法的执行过程,最终形成不含目标值的新链表。三种方法各有特点,适合不同场景需求。

2025-08-24 12:22:43 777

原创 【Day5】代码随想录 | 螺旋矩阵Ⅱ

本文介绍了LeetCode螺旋矩阵Ⅱ问题的解法。作者首先分析了错误思路的不足,即难以用双重循环控制螺旋填充过程。随后提出正确解法:采用循环不变量原则,按圈数(loop)分层处理,每圈遵循左闭右开规则填充四条边。代码通过start_x/y记录起始点,offset控制边界,count递增填充数字。特别处理了n为奇数时的中心点。文中强调了坐标重置和奇数处理的易错点,并附示意图说明填充路径。该解法时间复杂度O(n²),空间复杂度O(1)。

2025-08-20 13:26:34 320

原创 【Day4】代码随想录 | 长度最小的子数组

但是没有办法全部通过测试,部分用例超时。LeetCode 链接。循环,要表示起始位置。,则陷入我之前错误的解法。循环表示的是终止位置。另附滑动窗口算法示意图。

2025-08-17 13:29:49 847

原创 【Day3】代码随想录 | 有序数组的平方

本文介绍了LeetCode题目"有序数组的平方"的两种解法。暴力解法先平方后排序,时间复杂度为O(nlogn)或O(n²)。更优的双指针解法利用原数组有序的特性,从两边向中间遍历比较平方值,时间复杂度为O(n)。文章详细说明了双指针的实现细节,包括循环终止条件(i<=j)和迭代操作的注意事项,并附有算法示意图帮助理解。双指针法通过比较头尾元素的平方值,将较大值放入结果数组末尾,逐步向中间移动指针,确保结果有序。

2025-08-16 10:47:55 901

原创 【Day2】代码随想录 | 移除元素

本文介绍了LeetCode「移除元素」问题的两种解法。暴力解法使用双重循环覆盖元素,时间复杂度O(n²),需要注意数组边界处理和下标调整。更优的双指针法通过快慢指针实现,快指针遍历原数组,慢指针记录新数组位置,仅需一次遍历即可完成,时间复杂度O(n)。双指针法代码更简洁高效,是推荐解法。两种方法都保持O(1)空间复杂度。文章配有双指针操作示意图,直观展示元素移动过程。

2025-08-15 10:57:12 903

原创 【Day1】代码随想录 | 二分查找

本文总结了二分查找算法的关键要点和常见易错点。重点分析了两种区间定义方式:左闭右闭和左闭右开,并分别给出了对应的代码实现。主要注意事项包括:while循环条件的选择(left<=right或left<right)、边界更新的处理(mid-1或mid)、以及提前检查target范围的优化技巧。文章还提供了性能优化建议,如使用位运算避免溢出。通过保持区间定义的一致性,可以避免二分查找中的常见错误。

2025-08-14 11:35:44 345

原创 P2S chapter 4 条件

if-else 结构构成了 Python 分支控制,if 还能嵌套使用。合理的编写风格会让代码更易读,还能尽可能避免引入 bug。

2023-08-24 15:49:51 111 1

原创 P2S chapter 3 变量与函数

变量只是个标签,物理设备上有啥才是重点def、header、body、缩进、return函数是有作用域的,类似双层玻璃,里面可以看见外面,外面不能看见里面Helper Function 有时候会很有用一定要亲眼看你的代码是怎么跑起来的。

2023-08-24 15:47:41 662 1

原创 P2S chapter 2 数据类型和操作

Python 的类型系统很丰富,可以使用type()查看对应的类型常数类型的值是不可修改的除法操作默认是浮点数除法,整除操作需要使用//运算符之间有运算优先级,运算符作用于不同对象之间的效果是不同的在进行逻辑判断时,会使用短路求值。

2023-08-24 15:46:57 126 1

原创 P2S chapter 1

写注释调整输入输出的参数来控制其呈现效果大部分错误类型可以归为:语法错误、运行时错误和逻辑错误Python的库能让很多操作变方便。

2023-08-24 15:46:10 131 1

原创 数据结构 第三章:栈和队列

栈和队列是两种常用的、重要的数据结构是限定插入和删除只能在表的“端点”进行的线性表普通线性表的插入和删除操作栈和队列是线性表的子集(是插入和删除位置受限的线性表)规定栈的插入和删除只能在表尾操作栈的操作具有后进先出的固有特性如果问题求解的过程具有“后进先出”的天然特性,则求解算法中必然需要利用“栈”数制转换表达式求值括号匹配的检验八皇后问题行编辑程序函数调用迷宫求解递归调用的实现队列只能插入在表尾,删除只能删除表头元素队列的操作具有先进先出。

2023-08-15 21:18:15 353

原创 数据结构 第二章:线性表

线性表(Linear List)是具有相同特性的数据元素的一个有限序列a1a2⋯ai−1aiai1⋯⋯ana1​a2​⋯ai−1​ai​ai1​⋯⋯an​例1 分析26个英文字母组成的英文表ABCD⋯ZABCD⋯Z例2 分析学生情况登记表例3 十二星座(白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、摩羯座、水瓶座、双鱼座)同一线性表中的元素必定具有相同特性。

2023-08-09 15:55:54 351 1

原创 数据结构 类C语言有关操作

数组静态分配int length;} SqList;//顺序表类型数组的空间大小是确定的数组动态分配int length;} SqList;//顺序表类型 // 动态分配内存 SqList L;

2023-08-06 21:33:06 98

原创 数据结构 第一章:绪论

数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。数据(Data)数据元素(Data element)数据项(Data Item)构成数据元素的不可分割的最小单位数据、数据元素、数据项三者之间的关系:数据>数据元素>数据项数据对象(Data Object)数据结构(Data Structure)数据元素相互之间的关系称为结构是指相互之间存在一种或多种特定关系的数据元素集合或者说,数据结构式带结构的数据元素的集合数据结构包括以下三方面的内容:划分方法一划分方法二——四

2023-08-04 23:12:16 112 1

原创 C语言学习笔记(一):初识C语言

人和计算机交流的语言:C/C++/Java/Python/…C语言广泛应用于底层开发电脑是一个硬件,在上面安装操作系统:Windows/Linux/Mac硬件和操作系统之间有一个驱动层可以在操作系统上安装应用软件操作系统之上叫上层软件,之下叫底层软件计算机语言的发展:低级–>高级二进制的指令–>汇编指令–>B语言–>C语言C语言的国际标准:ANSI C、C89、C99、C11其编译器主要有Clang、GCC、WIN-TC、MSVC、Turbo C等编辑器-编辑。

2023-08-04 18:24:21 286 1

原创 动手学深度学习windows环境配置

深度学习环境配置

2023-03-21 15:56:54 323

空空如也

空空如也

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

TA关注的人

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