算法打卡
算法打卡
programer666bird
既要汲取知识,更要传播知识!
展开
-
两两交换链表中节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2023-09-07 16:26:46 · 282 阅读 · 0 评论 -
链表指定区间反转
题目:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。输入:1->2->3->4->5->NULL, m = 2, n = 4输出:1->4->3->2->5->NULL。原创 2023-09-07 16:01:54 · 497 阅读 · 0 评论 -
链表反转问题
链表反转常用的两种方式。原创 2023-09-07 11:33:59 · 135 阅读 · 0 评论 -
链表中环的问题和双向链表
先按照快慢指针方法寻找相遇位置,然后将两指针分别放在链表头和相遇位置,并改为相同速度推进,则两指针在环开始位置相遇。Java实现:双指针法。原创 2023-09-06 11:28:27 · 73 阅读 · 0 评论 -
5.删除链表元素问题
给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。,请你删除链表中所有满足。Java实现:双指针方法。给你一个链表的头节点。原创 2023-09-06 10:44:21 · 62 阅读 · 0 评论 -
4.双指针相关问题
针对这种情况需要获取链表长度,然后使用k=k%len来判断,如果k=0,则不用旋转,直接返回头结点。思路:使用双指针找到倒数K的位置,然后将倒数K位置左右两边的链表重新连接,从而得到结果。给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。输入: 1->2->3->4->5->NULL, k = 2。向右旋转 1 步: 5->1->2->3->4->NULL。向右旋转 2 步: 4->5->1->2->3->NULL。输出: 4->5->1->2->3->NULL。原创 2023-09-06 09:58:11 · 65 阅读 · 1 评论 -
3.合并有序链表
输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]解释:我们删除 list1 中第三和第四个节点,并将 list2 接在该位置。上图中蓝色的边和节点为答案链表。请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。输出:[0,1,2,1000000,1000001,1000002,5]原创 2023-09-05 11:20:27 · 69 阅读 · 1 评论 -
2.判断链表是否为回文序列
示例1:输入: 1->2->2->1输出: true进阶你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?原创 2023-09-05 10:35:08 · 61 阅读 · 1 评论 -
1.两个链表第一个公共子节点问题
python解法:差与双指针法,计算两张表的长度,然后长表先走长度之差的距离,然后再一起走,直到找到相同节点。解题思路1:使用HashMap。先遍历A链表,存储到HashMap中,然后遍历B链表,找出交。输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。解题思路2:使用集合。解题思路3:使用栈。先入栈,出栈,一直找到最晚出栈的相同节点。要求:空间复杂度 O(1),时间复杂度 O(n)输入:两个相交链表的两个头结点指针。输出:相交链表交点处结点指针。解题思路4:双指针法。原创 2023-09-05 10:05:48 · 37 阅读 · 1 评论 -
链表基础知识
来源编程导航算法课程原创 2023-09-05 09:20:22 · 56 阅读 · 1 评论