关闭

leetcode 24. Swap Nodes in Pairs

标签: leetcode
131人阅读 评论(0) 收藏 举报
分类:

题目

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

public  ListNode swapPairs(ListNode head) {  
        if(head == null){  
            return null;  
        }  
        // 当只有一个元素的情况  
        if(head.next == null){  
            return head;  
        }  
        ListNode i = head;  // i指向第1个  
        ListNode j = i.next;    // j指向第2个  
        ListNode k = j.next;    // k指向第3个  

        head = head.next;     
        while(j != null){  
            j.next = i;  
            if(k!=null && k.next!=null){    // 当有偶数个节点   
                i.next = k.next;  
            }else{      // 当有奇数个节点  
                i.next = k;  
            }  

            // 更新i,j,k的值,前进两格  
            i = k;  
            if(k != null){  
                j = k.next;  
            }else{  
                j = null;  
            }  
            if(k!=null && k.next!=null){  
                k = k.next.next;  
            }else{  
                k = null;  
            }  
        }  
        return head;  
    }  
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:63466次
    • 积分:1506
    • 等级:
    • 排名:千里之外
    • 原创:87篇
    • 转载:24篇
    • 译文:0篇
    • 评论:3条
    最新评论