Leetcode: 328. 奇偶链表
解法:设置一个标志位isOdd,由于开始从链表第一个元素遍历,因此isOdd初始值设为true,每遍历一个元素,isOdd=!isOdd,当isOdd为true,遍历到的元素插入到奇链表的尾部,当isOdd为false,元素插入到偶链表尾部,最终得到一个奇链表和偶链表,将奇链表的尾元素的下一个位置指向even.next。注意:偶链表的最后一个元素的next要设置为null,否则会出现循环链表。
class Solution {
public ListNode oddEvenList(ListNode head) {
ListNode odd = new ListNode(-1),oddTail = odd;
ListNode even = new ListNode(-1),evenTail = even;
boolean isOdd = true;
while(head != null){
if(isOdd == true){
oddTail.next = head;
oddTail = oddTail.next;
}else{
evenTail.next = head;
evenTail = evenTail.next;
}
head = head.next;
isOdd = !isOdd;
}
evenTail.next = null;
oddTail.next = even.next;
return odd.next;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。