leetcode 24. Swap Nodes in Pairs

来源:互联网 发布:帝国cms会员中心logo 编辑:程序博客网 时间:2024/06/08 00:12

题目

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
原创粉丝点击