【LeetCode】24. Swap Nodes in Pairs

【题目】

给一个链表,更换相邻结点的位置,要求不能修改结点的值,只能修改结点位置

比如:

给出1->2->3->4, 返回 2->1->4->3.

【思路】

该题考察链表的操作,

注意当链表个数为奇数时

(1)画图分析链表问题

(2)设置一个虚拟的头结点

(3)设置三个指针 temp、first、second

第一步

第二步

第三步

第四步

// Definition for singly-linked list.
class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class Solution {
    public ListNode swapPairs(ListNode head) {
        ListNode virtualHead = new ListNode(-1);
        virtualHead.next = head;
        ListNode temp = virtualHead;
        
        ListNode first = temp.next;
        ListNode second = null;
        while(first!=null){
            second = first.next;
            if(second == null) break;
            
            temp.next = second; // 第二步
            first.next = second.next; // 第三步
            second.next= first; // 第四步
            temp = first;
            first = temp.next;
        }
        
        return virtualHead.next;
    }
}

 

 


posted @ 2019-03-14 21:14  chsobin  阅读(107)  评论(0编辑  收藏  举报