diff options
| author | Lubos Kolouch <lubos@kolouch.net> | 2023-05-21 13:26:30 +0200 |
|---|---|---|
| committer | Lubos Kolouch <lubos@kolouch.net> | 2023-05-21 13:26:30 +0200 |
| commit | 4eebc07786114e281c00a6002eb0183daa35e0f4 (patch) | |
| tree | dd455e573a2355e1ae7c32e00bae9b8856615e6a /challenge-071/lubos-kolouch/python | |
| parent | c4b5be7c34b100fcda4b1e2481df1e497a7d2661 (diff) | |
| download | perlweeklychallenge-club-4eebc07786114e281c00a6002eb0183daa35e0f4.tar.gz perlweeklychallenge-club-4eebc07786114e281c00a6002eb0183daa35e0f4.tar.bz2 perlweeklychallenge-club-4eebc07786114e281c00a6002eb0183daa35e0f4.zip | |
feat(challenge-071/lubos-kolouch/perl,python/ch-1,-ch-2): Challenge 071 LK Perl Python
Diffstat (limited to 'challenge-071/lubos-kolouch/python')
| -rw-r--r-- | challenge-071/lubos-kolouch/python/ch-1.py | 26 | ||||
| -rw-r--r-- | challenge-071/lubos-kolouch/python/ch-2.py | 52 |
2 files changed, 78 insertions, 0 deletions
diff --git a/challenge-071/lubos-kolouch/python/ch-1.py b/challenge-071/lubos-kolouch/python/ch-1.py new file mode 100644 index 0000000000..7a92d52f8b --- /dev/null +++ b/challenge-071/lubos-kolouch/python/ch-1.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from typing import List + + +def find_peaks(arr: List[int]) -> List[int]: + n = len(arr) + # Initialize peaks list with the first element if it's bigger than the second + peaks = [arr[0]] if arr[0] > arr[1] else [] + + # Iterate over the array checking for peaks + for i in range(1, n-1): + if arr[i] > arr[i-1] and arr[i] > arr[i+1]: + peaks.append(arr[i]) + + # Add the last element if it's bigger than the penultimate + if arr[-1] > arr[-2]: + peaks.append(arr[-1]) + + return peaks + + +# Tests +print(find_peaks([18, 45, 38, 25, 10, 7, 21, 6, 28, 48])) # [48, 45, 21] +print(find_peaks([47, 11, 32, 8, 1, 9, 39, 14, 36, 23])) # [47, 32, 39, 36] diff --git a/challenge-071/lubos-kolouch/python/ch-2.py b/challenge-071/lubos-kolouch/python/ch-2.py new file mode 100644 index 0000000000..5662d38226 --- /dev/null +++ b/challenge-071/lubos-kolouch/python/ch-2.py @@ -0,0 +1,52 @@ +class Node: + def __init__(self, data=None): + self.data = data + self.next = None + + +class LinkedList: + def __init__(self): + self.head = None + + def append(self, data): + if not self.head: + self.head = Node(data) + else: + cur = self.head + while cur.next: + cur = cur.next + cur.next = Node(data) + + def remove_from_end(self, n): + if self.head is None: + return + size = 0 + cur = self.head + while cur: + size += 1 + cur = cur.next + if n >= size: + self.head = self.head.next if self.head.next else None + else: + cur = self.head + for _ in range(size - n - 1): + cur = cur.next + cur.next = cur.next.next if cur.next and cur.next.next else None + + def __str__(self): + values = [] + cur = self.head + while cur: + values.append(str(cur.data)) + cur = cur.next + return ' -> '.join(values) + + +# Tests +ll = LinkedList() +for i in range(1, 6): + ll.append(i) + +for i in range(1, 7): + ll.remove_from_end(i) + print(ll) |
