- 博客(12)
- 收藏
- 关注
原创 [OJ]数据结构:相交链表
寻找两个单链表相交节点的长度差解法。首先计算两个链表的长度差,让较长链表的指针先移动差值步数,然后同时遍历两个链表寻找相同节点。
2025-12-11 17:18:11
1012
原创 [OJ]数据结构:链表回文
判断链表是否为回文结构的算法。通过快慢指针找到链表中点(时间复杂度O(n)),将后半部分链表原地反转(空间复杂度O(1)),然后比较前后两部分节点值。
2025-12-11 14:12:14
1215
原创 [OJ]数据结构:只出现一次的数字
摘要:如何在线性时间复杂度和常数空间复杂度下,找出数组中仅出现一次的两个数字。通过利用异或运算的特性(a^a=0,a^0=a),该方法仅需两次遍历,时间复杂度O(n),空间复杂度O(1),较为高效。
2025-12-09 09:37:09
1244
原创 [OJ]数据结构:合并两个有序链表
两种合并两个有序链表的算法:尾插法和哨兵法。尾插法通过比较两个链表的头节点确定新链表的头,然后逐个比较节点值,将较小节点连接到尾部,最后处理剩余节点。哨兵法使用虚拟头节点简化操作,统一处理所有节点,最后释放哨兵节点。
2025-12-08 15:10:10
1086
原创 [OJ]数据结构:链表中倒数第k个结点
两种在单链表中查找倒数第k个节点的方法:第一种为朴素计数法,通过两次遍历找到我们想要的值;第二种快慢指针法更高效,使用两个指针,能够快速定位结果。
2025-12-06 21:51:24
1214
原创 [OJ]数据结构:链表的中间节点
两种查找链表中间节点的方法:1.朴素计数法:通过两次遍历链表,第一次统计节点数,第二次定位中间节点。时间复杂度O(n),空间复杂度O(1)。2.快慢指针法:使用双指针同步移动,快指针每次两步,慢指针每次一步。时间复杂度O(n),空间复杂度O(1)。
2025-12-05 09:58:55
1030
原创 [OJ]数据结构:移除链表元素
采用双指针法移除链表元素,首先预处理连续需要删除的头节点,然后使用prev和cur指针遍历链表。当遇到目标值时,先保存待删节点,移动指针,更新前驱节点的next指针,最后释放内存。特别强调处理头节点、空指针解引用、内存泄漏等常见陷阱。算法时间复杂度O(n),空间复杂度O(1),适用于单链表节点删除操作。
2025-12-04 10:25:10
21397
5
原创 [OJ]数据结构:反转链表
使用三指针法反转单链表的解决方案。通过定义三个指针(next1指向前驱节点、next2指向当前节点、next3指向后继节点),逐步改变节点指向实现反转。算法时间复杂度为O(n),空间复杂度为O(1)。详细演示了反转过程,包括初始检查、循环操作和终止条件,并强调了三指针的协作机制。该方法是处理链表反转问题的经典方案,适用于各种规模的链表操作。
2025-12-03 15:41:24
6103
4
原创 [OJ]数据结构:数组形式的整数加法
本文介绍了一种将整数数组形式与整数相加的C语言实现方法。函数addToArrayForm通过模拟手工加法过程,逐位计算并处理进位问题。首先计算整数k的位数以确定结果数组长度,然后从数组末尾开始逐位相加,处理进位后将结果数组反转以获得正确顺序。该方法时间复杂度为O(n),空间复杂度为O(n),适用于大数运算场景。文章还提供了示例演示和另一种实现思路,展示了处理此类问题的有效策略。
2025-11-26 08:41:47
5980
2
原创 [OJ]数据结构:删除有序数组重复项
本文介绍了两种双指针法解决有序数组去重问题。第一种方法使用prev和cur两个指针遍历数组,将不重复元素覆盖到前部,但逻辑稍显冗余。优化后的方法仅用k指针标记唯一元素末尾,i指针遍历数组,当nums[i]!=nums[k]时更新k位置元素。优化版本时间复杂度O(n),空间复杂度O(1),逻辑更简洁高效。推荐使用第二种方法实现数组原地去重。
2025-11-25 11:32:05
5324
4
原创 [OJ]数据结构:移除元素
本文介绍了一种高效移除数组中指定元素的双指针算法。通过维护一个索引k,遍历数组时将不等于目标值的元素前移,实现原地修改。算法时间复杂度为O(n),空间复杂度为O(1),能正确处理空数组或全匹配元素的边界情况。代码示例展示了从双指针到单指针的优化过程,最终实现简洁高效的数组元素移除操作。
2025-11-25 10:23:27
5144
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅