乐趣区

关于leetcode个人解题总结:刷题16奇偶链表

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;
    }   
}
退出移动版