451. 两两交换链表中的节点
给一个链表,两两交换其中的节点,然后返回交换后的链表。
样例
样例 1:
输入:1->2->3->4->null
输出:2->1->4->3->null
样例 2:
输入:5->null
输出:5->null
挑战
你的算法只能使用常数的额外空间,并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
public ListNode swapPairs(ListNode head) {
// write your code here
ListNode retNext = head;
int flag = 0;
while (retNext.next != null) {
if (flag % 2 == 0) {
int temp = retNext.next.val;
retNext.next.val = retNext.val;
retNext.val=temp;
}
flag++;
retNext = retNext.next;
}
return head;
}
挑战
public class Solution {
/**
* @param head: a ListNode
* @return: a ListNode
*/
public ListNode swapPairs(ListNode head) {
// write your code here
ListNode retNext = head;
ListNode ret = null;
while (retNext!= null&&retNext.next != null) {
System.out.println(retNext.val);
if (ret==null){
head=retNext.next;
retNext.next=retNext.next.next;
head.next=retNext;
ret= head.next;
}else {
ListNode temp=retNext.next;
retNext.next=retNext.next.next;
temp.next=retNext;
ret.next=temp;
ret= ret.next.next;
}
retNext = retNext.next;
}
return head;
}
}