标签:efi list turn 相对 节点 for style == 维护
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。
示例 1:
输入: 1->2->3->4->5->NULL
输出: 1->3->5->2->4->NULL
示例 2:
输入: 2->1->3->5->6->4->7->NULL
输出: 2->3->6->7->1->5->4->NULL
说明:
解题思路:用head和odd指针维护奇链表,用evenhead和even指针维护偶链表。
当然偶链表的evenhead我们可以把它设为一个结点(1)或者一个指针指向首结点(2)。都行,差别不大。
1.
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 class Solution { 10 public ListNode oddEvenList(ListNode head) { 11 if(head==null) return null; 12 ListNode evenhead=new ListNode(); 13 evenhead.next=head.next; 14 ListNode odd=head; 15 ListNode even=evenhead.next; 16 while(even!=null&&even.next!=null){ 17 odd.next=even.next; 18 odd=even.next; 19 even.next=odd.next; 20 even=odd.next; 21 } 22 odd.next=evenhead.next; 23 return head; 24 } 25 }
2.
1 class Solution { 2 public ListNode oddEvenList(ListNode head) { 3 if(head==null) return null; 4 ListNode ood=head; 5 ListNode even=head.next; 6 ListNode evenhead=even; 7 while(even!=null&&even.next!=null){ 8 ood.next=even.next; 9 ood=ood.next; 10 even.next=ood.next; 11 even=even.next; 12 13 } 14 ood.next=evenhead; 15 return head; 16 } 17 }
标签:efi list turn 相对 节点 for style == 维护
原文地址:https://www.cnblogs.com/szzla/p/12731242.html