本文主要是介绍swap-nodes-in-pairs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
将给定的链表中每两个相邻的节点交换一次,返回链表的头指针
例如,
给出1->2->3->4,你应该返回链表2->1->4->3。
你给出的算法只能使用常量级的空间。你不能修改列表中的值,只能修改节点本身。
思路:
每次将相邻节点的第二个节点的next指针指向前一个节点,然后第一个节点的指针要指向下一组已经反转的相邻节点的第一个节点,很明显可以使用递归,反转当前的一组相邻节点,先反转下一组相邻节点
public class Solution {public ListNode swapPairs(ListNode head) {//递归出口if(head == null || head.next == null)return head;//每组相邻节点的第二个节点ListNode newNode = head.next;//每组相邻节点的第一个节点的next指针指向下一组已反转的第一个节点head.next = swapPairs(head.next.next);//每组相邻节点的第二个节点的next指针指向改组的第一个节点newNode.next = head;return newNode;}
}
这篇关于swap-nodes-in-pairs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!