LeetCode24 两两反转链表

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xiaoen1/article/details/102768636

LeetCode24 两两反转链表

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

递归:

public ListNode swapPairs(ListNode head) {
    if (head==null || head.next==null) {
        return head;
    } 
    ListNode next = head.next;
    head.next = swapPairs(next.next);
    next.next = head;
    return next;  
}

迭代:

public ListNode swapPaires(ListNode head){
    ListNode pre = new ListNode(0);
    pre.next = head;
    ListNode tmp = pre;
    while(tmp.next !=null && tmp.next.next != null){
        ListNode start = tmp.next;
        ListNode end = tmp.next.next;
        tmp.next = end;
        start.next = end.next;
        end.next = start;
        tmp = start;
    }
    return pre.next;
}

猜你喜欢

转载自blog.csdn.net/xiaoen1/article/details/102768636