LeetCode 24. Swap Nodes in Pairs(Java)

题目

       将链表中相邻的两个节点交换位置,注意第一个节点与第二个节点要交换位置,第三个节点与第四个节点要交换位置, 而第二个节点不用与第三个节点交换位置。

Note:

       1.不允许修改节点的值;
       2.只能用常量的额外空间.

思路分析
23.png

代码实现如下:

public ListNode swapPairs(ListNode head) {
        //如果链表为空或者只有一个节点,那么就直接返回head节点即可
        if(head == null ||head.next == null)
            return head;
        ListNode preNode, currentNode, afterNode;
        currentNode = head;
        //添加辅助头节点,这是链表中比较常用的小技巧,因为这样可以避免处理head的边界情况
        head = new ListNode(0);
        head.next = currentNode;
        preNode = head;
        while (currentNode!=null && currentNode.next!=null){
            afterNode = currentNode.next;
            currentNode.next = afterNode.next;
            afterNode.next = currentNode;
            preNode.next = afterNode;
            preNode = currentNode;
            currentNode = currentNode.next;

        }
        return head.next;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。