草庐IT

24. 两两交换链表中的节点&19.删除链表的倒数第N个节点 &160.链表相交&142.环形链表II

24. 两两交换链表中的节点:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 19.删除链表的倒数第N个节点 给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。 160.链表相交:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 142.环形链表II:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。 

代码随想录算法训练营第4天 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 160 142

#24耗时1h自己想+写,链表这块熟练度欠佳,顺序老想不清过程中几个调整:1.经常纠结要不要dummy,结果这题还是要(我真有点判断不出什么时候要/不要)2.有dummy时返回要是dummy->next3.调while里面那段的顺序调了半天,一定要画图画图画箭头4.while条件我也想了半天ListNode*swapPairs(ListNode*head){ListNode*dummy=newListNode(0,head);ListNode*curr=dummy;ListNode*tmp1,*tmp2;if(curr->next==NULL||curr->next->next==NULL){

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

今日任务:24.两两交换链表中的节点19.删除链表的倒数第N个节点面试题02.07.链表相交142.环形链表II状态:1刷文章目录前言一、24.两两交换链表中的节点二、19.删除链表的倒数第N个结点三、面试题02.07.链表相交方法1方法2四、142.环形链表II总结前言链表多考虑用虚拟头结点,这样会方便很多,双指针的操作注意,删除第N个节点,那么我们当前遍历的指针一定要指向第N个节点的前一个节点一、24.两两交换链表中的节点题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换思路:虚拟头节点+画图,要厘清指针顺序代码:c

【小嘟陪你刷题08】二进制链表转整数、从尾到头打印链表、两两交换链表中的节点、相交链表、环形链表

目录一、二进制链表转整数1.1迭代1.2代码展示二、从尾到头打印链表2.1辅助栈法2.2代码展示三、两两交换链表中的节点3.1迭代3.2代码展示四、相交链表4.1双指针4.2代码展示五、环形链表5.1环形链表I5.1.1快慢指针5.1.2代码展示5.2环形链表II5.2.1快慢指针5.2.2代码展示一、二进制链表转整数1.1迭代创建一个节点cur去遍历链表,实现每个节点的值二进制转整数1.2代码展示/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNod

两两交换链表节点+删除链表的倒数第n个节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1]来源:力扣(LeetCode)链接:https://leetcode.cn/problems/swap-nodes-in-pairs著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 (代码有一点问题,有时间会修改)#includeusingnamespacestd;structLNode{   int

代码随想录算法训练营第四天|24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

24.两两交换链表中的节点题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1]思路:建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。初始时,cur指向虚拟头结点,然后进行如下三步:代码:/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListN

day4 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、 142.环形链表II

目录:链接题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/https://leetcode.cn/problems/remove-nth-node-from-end-of-list/https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/https://leetcode.cn/problems/linked-list-cycle-ii/解题及思路学习24.两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内

代码随想录算法训练营第四天|24.两两交换链表中的结点 19.删除链表倒数第n个结点 02.07.链表相交 142.环形链表II

目录LeeCode24.两两交换链表中的结点LeeCode19.删除链表倒数第n个结点LeeCode02.07.链表相交LeeCode142.环形链表II总结LeeCode24.两两交换链表中的结点力扣题目链接思路:题目要求不能改变结点内部值,故通过改变指针来完成交换操作。如下图所示——classSolution{public:ListNode*swapPairs(ListNode*head){ ListNode*dummyHead=newListNode(0); dummyHead->next=head; ListNode*cur=dummyHead; while(cur->next!

代码随想录day4: 24两两交换链表的节点 19删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

24两两交换链表的节点https://leetcode.cn/problems/swap-nodes-in-pairs/comments/给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题第一次的尝试,写到交换节点的时候,突然想到头节点的返回是个麻烦事,不能带进循环里,否则就返回不了交换后的头节点。因此,采用虚拟节点似乎更合理化。需要注意的是cur的下一节点和下下节点是否为空,不然会出现空指针的错误。19删除链表的第N个节点https://leetcode.cn/problems/remove-nth-node-from-end-of-l

代码随想录算法训练营第四天| 24. 两两交换链表中的节点、 19.删除链表的倒数第N个节点 、面试题 02.07. 链表相交、 142.环形链表II

24.两两交换链表中的节点思路考虑将所有节点从头两两分组,每个组之间进行节点交换,在遍历每一组过程中过程中需要存储第一个节点用于组间连接操作。两两分组循环可以用一个对2取余的iter来标记。对单个节点的组并不需要操作,所以可以看作正常组的第一阶段。更重要的是交换顺序后组间的连接,此时需要一个存储上一组的尾节点,这里我们用last_iter_tail表示。此外,第一组节点的交换还要考虑头节点的更新。具体操作:初始:1->2->3->4->null第一组组内交换:2->1->3->4->null第二组组内交换:2->1->3->null4->3->null一二组连接:2->1->4->3->nul