From 147157c3d954c33eba51427499ecc8362a9afaa6 Mon Sep 17 00:00:00 2001 From: Pavel Karateev Date: Sun, 4 Feb 2024 23:01:53 +0100 Subject: [PATCH] "Majority Element" solution --- src/majority_element.py | 14 ++++++++++++++ tests/test_majority_element.py | 14 ++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/majority_element.py create mode 100644 tests/test_majority_element.py diff --git a/src/majority_element.py b/src/majority_element.py new file mode 100644 index 0000000..41ea069 --- /dev/null +++ b/src/majority_element.py @@ -0,0 +1,14 @@ +class Solution: + def majorityElement(self, nums: list[int]) -> int: + result = nums[0] + count = 0 + + for num in nums: + if num == result: + count += 1 + elif count == 1: + result = num + else: + count -= 1 + + return result diff --git a/tests/test_majority_element.py b/tests/test_majority_element.py new file mode 100644 index 0000000..9b41377 --- /dev/null +++ b/tests/test_majority_element.py @@ -0,0 +1,14 @@ +import pytest + +from src.majority_element import Solution + + +@pytest.mark.parametrize( + "nums,expected", + ( + ([3, 2, 3], 3), + ([2, 2, 1, 1, 1, 2, 2], 2), + ), +) +def test_solution(nums, expected): + assert Solution().majorityElement(nums) == expected