There are two sorted arrays nums1 and nums2 of size m and n respectively.

Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

Example 1:

nums1 = [1, 3]
nums2 = [2]

The median is 2.0



Example 2:

nums1 = [1, 2]
nums2 = [3, 4]

The median is (2 + 3)/2 = 2.5

Source: leetcode | Difficulty: MEDIUM_HARD
Tags: Sorting

Data structures

Divide and conquer

Starter code: class Solution:
    def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
        

Solutions:
class Solution:

	def findMedianSortedArrays(self, nums1, nums2):
		nums = nums1 + nums2
		nums.sort()
		if len(nums) % 2 == 1:
			return float(nums[len(nums) // 2])
		return (nums[len(nums) // 2 - 1] + nums[len(nums) // 2]) / 2


class Solution:

	def findMedianSortedArrays(self, nums1, nums2):
		nums1 = nums1 + nums2
		nums1.sort()
		len_nums1 = len(nums1)
		if len_nums1 % 2 == 0:
			return float((nums1[int(len_nums1 / 2) - 1] + nums1[int(len_nums1 / 2)]) / 2)
		else:
			return float(nums1[int(len_nums1 / 2)])


class Solution:

	def findMedianSortedArrays(self, nums1, nums2):
		nums1.extend(nums2)
		nums1.sort()
		size = len(nums1)
		if size % 2:
			return nums1[size // 2]
		else:
			return (nums1[size // 2] + nums1[size // 2 - 1]) / 2


class Solution:

	def findMedianSortedArrays(self, nums1, nums2):
		nums = sorted(nums1 + nums2)
		n = len(nums)
		return nums[int(n / 2)] if n % 2 == 1 else (nums[int(n / 2)] + nums[int(n / 2) - 1]) / 2.0