leetcode 0024
说明
只是为了记录一下,不求多快,也不深究。
会简要描述思路,代码中不写注释。
如碰到不会做的用了别人代码会在博客中标出。
题目描述
思路
先搞一个头节点start和tail。
两个节点两个节点地连进来,注意顺序。
连之前先存储下两个节点。
更新这两个节点,更新tail。
注意奇偶的差别。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null) {
return head;
}
ListNode odd = head;
ListNode even = head.next;
ListNode start = new ListNode(-1);
ListNode tail = start;
ListNode newodd = null;
ListNode neweven = null;
while(odd!=null) {
newodd = even.next;
if(newodd!=null) {
neweven = newodd.next;
}
tail.next = even;
even.next = odd;
if(newodd!=null&&neweven == null) {
odd.next = newodd;
break;
}else {
odd.next = null;
}
tail = odd;
odd = newodd;
even = neweven;
}
return start.next;
}
}