LeetCode24. 两两交换链表中的节点

 

输入:head = [1,2,3,4]
输出:[2,1,4,3]

遍历思路:先定义一个节点0,让0->head,让1指向next的next,也就是3,因为目的是给1和2做交换,让0指向2,2指向1,这样就完成1和2的交换了,然后让temp跳过2指向1,继续迭代,最后返回0的next
// 遍历方式
var swapPairs = function (head) {
    let dummy = new ListNode(0);
    dummy.next = head;
    let temp = dummy;
     while(temp.next !== null && temp.next.next!==null) {
        let node1 = temp.next; //1
        let node2 = temp.next.next; //2
        node1.next = node2.next;
        temp.next = node2;
        
        temp.next.next = node1;
        temp = temp.next.next;
        // console.log(temp,node1);

     }
     return dummy.next;
};

 

递归方式

// 递归方式
var swapPairs = function (head) {
    if(head===null || head.next === null) {
        return head;
    }
    let temp = head.next;
    head.next = swapPairs(temp.next)
    temp.next = head;
    return temp;
}

 

posted @ 2021-03-21 10:33  JMH0113  阅读(44)  评论(0)    收藏  举报