leetcode_328. 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.

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.

Note:
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 ...

Credits:

题意:

给定单链表,将单链表的奇节点组合在一起,偶节点组合在一起,并将所有偶节点连在奇节点后面,单链表相对位置保持不变。


代码:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None


class Solution(object):
    def oddEvenList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        
        if head != None :
            odd = None   #奇节点
            even = None    #偶节点
            
            cur_odd = None   #奇节点
            cur_even = None    #偶节点
            
            odd = head
            cur_odd = odd
            if head.next != None :
                even = head.next
                cur_even = even
                
                head = head.next
                
                k = 1
                while head.next != None :
                    if k == 1 :
                        cur_odd.next = head.next
                        cur_odd = cur_odd.next
                        head = head.next
                        k = 2
                    else :
                        cur_even.next = head.next
                        cur_even = cur_even.next
                        head = head.next
                        k = 1
               
                if k == 1 :
                   cur_odd.next = None
                if k == 2 :
                    cur_even.next = None
            
            cur_odd.next = even
            
            return odd
                
笔记:

创建两个节点odd和even,odd记录所有奇节点,even记录所有的偶节点,最后将奇节点链表指向偶节点链表,组成新的链表

             
                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值