给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。
示例 1:
输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL
1.奇偶分离
class Solution: def oddEvenList(self, head: ListNode) -> ListNode: if not head or not head.next :return head if head.next and not head.next.next:return head odd_keep=odd=head even_keep=even=head.next cnt=3 head=head.next.next while head: if cnt%2!=0: odd.next=head odd=odd.next else: even.next=head even=even.next head=head.next cnt+=1 even.next=None odd.next=even_keep return odd_keep class Solution: def oddEvenList(self, head: ListNode) -> ListNode: if not head:return head odd=head even_keep=even=head.next while even and even.next: odd.next=odd.next.next even.next=even.next.next even,odd=even.next,odd.next odd.next=even_keep return head