p328

LeetCode 328 Odd Even Linked List 题解

1.题目:

Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.
You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.
Example:
Given 1->2->3->4->5->NULL,
return 1->3->5->2->4->NULL.

题意:

输入一个链表将偶数位上的全部移到链表后面

2.解题思路:

开始自己分奇偶循环一遍,然后发现了更优雅的算法(感谢discuss

3.代码


[title] [] [url] [link text]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 


/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode oddEvenList(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode one = head;

ListNode two = head.next;
ListNode twoheadListNode=two;

while (two!=null&&two.next!=null)
{
one.next=one.next.next;
two.next=two.next.next;
two=two.next;
one=one.next;
}
one.next=twoheadListNode;

return head;
}
}


4.一些总结: