diff options
| author | Lubos Kolouch <lubos@kolouch.net> | 2023-05-16 15:17:54 +0200 |
|---|---|---|
| committer | Lubos Kolouch <lubos@kolouch.net> | 2023-05-16 15:17:54 +0200 |
| commit | f6acc228ec94edeeb17e950d00d2831733bb421f (patch) | |
| tree | 1d0ae4d28a2d9af0f58c6e2c837adf4b736a4191 /challenge-068/lubos-kolouch/python/ch-2.py | |
| parent | b7b029f85595734938066ed2efefded43aacf260 (diff) | |
| download | perlweeklychallenge-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.py | 45 |
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 |
