本文主要是介绍[力扣 Hot100]Day30 两两交换链表中的节点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
出处
思路
前两个结点先偷一手用交换val做,从链表第1项(0开始计数)开始递归调用来交换结点。
代码
class Solution {
public:ListNode* my_swap(ListNode *h){//交换h后的两个结点并返回下一结点的指针if(!h->next||!h->next->next)return nullptr;ListNode* p=h->next;ListNode* q=h->next->next;p->next=q->next;h->next=q;q->next=p;return p;}ListNode* swapPairs(ListNode* head) {//先处理前两个if(!head||!head->next)return head;int t=head->next->val;head->next->val=head->val;head->val=t;ListNode* p=head->next;while(p) p=my_swap(p);return head;}
};
这篇关于[力扣 Hot100]Day30 两两交换链表中的节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!