aboutsummaryrefslogtreecommitdiff
path: root/challenge-068/lubos-kolouch/python/ch-2.py
diff options
context:
space:
mode:
authorLubos Kolouch <lubos@kolouch.net>2023-05-16 15:17:54 +0200
committerLubos Kolouch <lubos@kolouch.net>2023-05-16 15:17:54 +0200
commitf6acc228ec94edeeb17e950d00d2831733bb421f (patch)
tree1d0ae4d28a2d9af0f58c6e2c837adf4b736a4191 /challenge-068/lubos-kolouch/python/ch-2.py
parentb7b029f85595734938066ed2efefded43aacf260 (diff)
downloadperlweeklychallenge-club-f6acc228ec94edeeb17e950d00d2831733bb421f.tar.gz
perlweeklychallenge-club-f6acc228ec94edeeb17e950d00d2831733bb421f.tar.bz2
perlweeklychallenge-club-f6acc228ec94edeeb17e950d00d2831733bb421f.zip
feat(challenge-068/lubos-kolouch/p[erl,ython]/ch[1,2].p[ly]): Challenge 068 LK Python Perl
Diffstat (limited to 'challenge-068/lubos-kolouch/python/ch-2.py')
-rw-r--r--challenge-068/lubos-kolouch/python/ch-2.py45
1 files changed, 45 insertions, 0 deletions
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