From f6acc228ec94edeeb17e950d00d2831733bb421f Mon Sep 17 00:00:00 2001 From: Lubos Kolouch Date: Tue, 16 May 2023 15:17:54 +0200 Subject: feat(challenge-068/lubos-kolouch/p[erl,ython]/ch[1,2].p[ly]): Challenge 068 LK Python Perl --- challenge-068/lubos-kolouch/python/ch-2.py | 45 ++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 challenge-068/lubos-kolouch/python/ch-2.py (limited to 'challenge-068/lubos-kolouch/python/ch-2.py') diff --git a/challenge-068/lubos-kolouch/python/ch-2.py b/challenge-068/lubos-kolouch/python/ch-2.py new file mode 100644 index 0000000000..7f73a59f9b --- /dev/null +++ b/challenge-068/lubos-kolouch/python/ch-2.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +class Node: + def __init__(self, x): + self.val = x + self.next = None + + +def reorderList(head): + # Find the middle of the linked list + slow = fast = head + while fast and fast.next: + slow = slow.next + fast = fast.next.next + + # Reverse the second half of the linked list + prev = None + while slow: + next_node = slow.next + slow.next = prev + prev = slow + slow = next_node + + # Merge the first half and the reversed second half + first_half = head + second_half = prev + while second_half.next: + first_half.next, first_half = second_half, first_half.next + second_half.next, second_half = first_half, second_half.next + + return head + + +# Test the function +head = Node(1) +head.next = Node(2) +head.next.next = Node(3) +head.next.next.next = Node(4) +reordered_list = reorderList(head) + +node = reordered_list +while node: + print(node.val, end=" ") + node = node.next -- cgit