lintcode练习- 1292. Odd Even Linked List

1292. Odd Even Linked List

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.

样例

Example:
Given 1->2->3->4->5->NULL,
return 1->3->5->2->4->NULL.

注意事项

The relative order inside both the even and odd groups should remain as it was in the input.
The first node is considered odd, the second node even and so on ...

解题思路:

两种实现思路:

一种是移动奇偶结点,每次移动两格,当遇到尾结点为奇结点时,特殊处理。

另一种是设置一个变量,记录奇偶,遍历链表,is_odd = not is_odd。

#on my way
class Solution:
    """
    @param head: a singly linked list
    @return: Modified linked list
    """
    def oddEvenList(self, head):
        # write your code here
        if head is None:
            return head
        odd, even = ListNode(0), ListNode(0)
        odd_pre, even_pre = odd, even
        
        pre, cur = head, head.next
        while pre.next:
            odd_pre.next = pre
            even_pre.next = cur
            odd_pre = odd_pre.next
            even_pre = even_pre.next
            
            pre = pre.next.next
            if pre is None:
                break
            cur = pre.next
        
 
        if pre and pre.next is None:
            odd_pre.next = pre
            odd_pre = odd_pre.next
        
        even_pre.next = None    
        odd_pre.next = even.next
        
        
        return odd.next
class Solution:
    """
    @param head: a singly linked list
    @return: Modified linked list
    """
    def oddEvenList(self, head):
        # write your code here
        odd_head = odd = ListNode(0)
        even_head = even = ListNode(0)
        
        is_odd = True
        while head:
            if is_odd:
                odd.next = head
                odd = odd.next
            else:
                even.next = head
                even = even.next
            
            is_odd = not is_odd
            head = head.next
        
        even.next = None
        odd.next = even_head.next
        return odd_head.next

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/81749408
今日推荐