-
-
Notifications
You must be signed in to change notification settings - Fork 46.9k
Create find_median_sorted_arrays.py #11198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
pedram-mohajer
wants to merge
4
commits into
TheAlgorithms:master
from
pedram-mohajer:pedram-mohajer-find-median-sorted-array
Closed
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
8719b47
Create find_median_sorted_arrays.py
pedram-mohajer e6e2fd0
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] 8064577
Update find_median_sorted_arrays.py
pedram-mohajer 5ab57b5
Update find_median_sorted_arrays.py
pedram-mohajer File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
""" | ||
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)) |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.