From 8719b477b7a2dfa88730b26565cf2be93a71fb57 Mon Sep 17 00:00:00 2001 From: Pedram_Mohajer <48964282+pedram-mohajer@users.noreply.github.com> Date: Mon, 4 Dec 2023 23:05:58 -0500 Subject: [PATCH 1/4] Create find_median_sorted_arrays.py --- .../arrays/find_median_sorted_arrays.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 data_structures/arrays/find_median_sorted_arrays.py diff --git a/data_structures/arrays/find_median_sorted_arrays.py b/data_structures/arrays/find_median_sorted_arrays.py new file mode 100644 index 000000000000..84bd7d04a81b --- /dev/null +++ b/data_structures/arrays/find_median_sorted_arrays.py @@ -0,0 +1,75 @@ +""" +https://atharayil.medium.com/median-of-two-sorted-arrays-day-36-python-fcbd2dbbb668 +""" + +def find_median_sorted_arrays(nums1: list[int], nums2: list[int]) -> float: + """ + Find the median of two sorted integer arrays. + + :param nums1: The first sorted array (must be integers). + :param nums2: The second sorted array (must be integers). + :return: The median of the combined sorted arrays. + :raises ValueError: if both are empty, not sorted, or contain non-integer values. + + >>> find_median_sorted_arrays([1, 3], [2]) + 2.0 + >>> find_median_sorted_arrays([1, 2], [3, 4]) + 2.5 + >>> find_median_sorted_arrays([1, 3, 5], [2, 4, 6]) + 3.5 + >>> find_median_sorted_arrays([1, 2, 3], [4, 5, 6, 7]) + 4.0 + >>> find_median_sorted_arrays([], [2, 3]) + 2.5 + >>> find_median_sorted_arrays([-2, -1], [0, 2]) + -0.5 + >>> find_median_sorted_arrays([1.5, 2.5], [3.0, 4.0]) # Contains a float + Traceback (most recent call last): + ... + ValueError: Input arrays must be sorted and contain only integer values + >>> find_median_sorted_arrays([3, 2, 1], [4, 5, 6]) # Not sorted + Traceback (most recent call last): + ... + ValueError: Input arrays must be sorted and contain only integer values + >>> find_median_sorted_arrays([1, 2, 'a'], [3, 4, 5]) # Contains a character + Traceback (most recent call last): + ... + ValueError: Input arrays must be sorted and contain only integer values + >>> find_median_sorted_arrays(['a', 'b', 'c'], [3, 4, 5]) # Contains a character + Traceback (most recent call last): + ... + ValueError: Input arrays must be sorted and contain only integer values + """ + # Check if both input arrays are empty + if not nums1 and not nums2: + raise ValueError("Input arrays are empty") + + # Check if arrays are sorted and contain only integer values + for array in [nums1, nums2]: + if any(not isinstance(x, int) for x in array) or any( + array[i] > array[i + 1] for i in range(len(array) - 1) + ): + raise ValueError( + "Input arrays must be sorted and contain only integer values" + ) + + # Combine and sort the arrays + combined = sorted(nums1 + nums2) + + # Calculate the median + mid = len(combined) // 2 + if len(combined) % 2 == 0: + return float((combined[mid - 1] + combined[mid]) / 2.0) + else: + return float(combined[mid]) + + +# Example usage +if __name__ == "__main__": + nums1 = [1, 3] + nums2 = [2] + print("Median of Example 1:", find_median_sorted_arrays(nums1, nums2)) + + nums1 = [-4, -2] + nums2 = [3, 4] + print("Median of Example 2:", find_median_sorted_arrays(nums1, nums2)) From e6e2fd037abbd0dcfefe86b7f9bac2f75422f090 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 04:08:05 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/arrays/find_median_sorted_arrays.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_structures/arrays/find_median_sorted_arrays.py b/data_structures/arrays/find_median_sorted_arrays.py index 84bd7d04a81b..b473f67f281c 100644 --- a/data_structures/arrays/find_median_sorted_arrays.py +++ b/data_structures/arrays/find_median_sorted_arrays.py @@ -2,6 +2,7 @@ https://atharayil.medium.com/median-of-two-sorted-arrays-day-36-python-fcbd2dbbb668 """ + def find_median_sorted_arrays(nums1: list[int], nums2: list[int]) -> float: """ Find the median of two sorted integer arrays. From 80645772bb0e85a58b31d6c24cbc6ebe16c68c1a Mon Sep 17 00:00:00 2001 From: Pedram_Mohajer <48964282+pedram-mohajer@users.noreply.github.com> Date: Tue, 5 Dec 2023 08:51:09 -0500 Subject: [PATCH 3/4] Update find_median_sorted_arrays.py Co-authored-by: Saptadeep Banerjee <69459134+imSanko@users.noreply.github.com> --- data_structures/arrays/find_median_sorted_arrays.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/arrays/find_median_sorted_arrays.py b/data_structures/arrays/find_median_sorted_arrays.py index b473f67f281c..bd714f051591 100644 --- a/data_structures/arrays/find_median_sorted_arrays.py +++ b/data_structures/arrays/find_median_sorted_arrays.py @@ -3,7 +3,7 @@ """ -def find_median_sorted_arrays(nums1: list[int], nums2: list[int]) -> float: +def find_median_sorted_arrays(nums1: List[int], nums2: List[int]) -> float: """ Find the median of two sorted integer arrays. From 5ab57b558ee3684029f3916218b28d86225e5fe4 Mon Sep 17 00:00:00 2001 From: Pedram_Mohajer <48964282+pedram-mohajer@users.noreply.github.com> Date: Tue, 5 Dec 2023 08:54:26 -0500 Subject: [PATCH 4/4] Update find_median_sorted_arrays.py --- data_structures/arrays/find_median_sorted_arrays.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/arrays/find_median_sorted_arrays.py b/data_structures/arrays/find_median_sorted_arrays.py index bd714f051591..b473f67f281c 100644 --- a/data_structures/arrays/find_median_sorted_arrays.py +++ b/data_structures/arrays/find_median_sorted_arrays.py @@ -3,7 +3,7 @@ """ -def find_median_sorted_arrays(nums1: List[int], nums2: List[int]) -> float: +def find_median_sorted_arrays(nums1: list[int], nums2: list[int]) -> float: """ Find the median of two sorted integer arrays.