๐ 4.ย Median of Two Sorted Arrays
๋ฌธ์ ๋ฒ์ญ(OpenAI)โ
ํฌ๊ธฐ๊ฐ ๊ฐ๊ฐ m๊ณผ n์ธ ๋ ์ ๋ ฌ๋ ๋ฐฐ์ด nums1๊ณผ nums2๊ฐ ์ฃผ์ด์ก์ ๋, ๋ ๋ฐฐ์ด์ ์ค์๊ฐ์ ๋ฐํํ์ธ์.
์ ์ฒด ์คํ ์๊ฐ ๋ณต์ก๋๋ O(log (m+n))์ด์ด์ผ ํฉ๋๋ค.
์์ 1:
์
๋ ฅ: nums1 = [1,3], nums2 = [2]
์ถ๋ ฅ: 2.00000
์ค๋ช
: ๋ณํฉ๋ ๋ฐฐ์ด์ [1,2,3]์ด๊ณ ์ค์๊ฐ์ 2์
๋๋ค.
์์ 2:
์
๋ ฅ: nums1 = [1,2], nums2 = [3,4]
์ถ๋ ฅ: 2.50000
์ค๋ช
: ๋ณํฉ๋ ๋ฐฐ์ด์ [1,2,3,4]์ด๊ณ ์ค์๊ฐ์ (2 + 3) / 2 = 2.5์
๋๋ค.
์ ์ฝ ์กฐ๊ฑด:
nums1.length == mnums2.length == n0 <= m <= 10000 <= n <= 10001 <= m + n <= 2000106 <= nums1[i], nums2[i] <= 106
ํ์ด๋ฒโ
์ฒ์์ ๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ๊ทธ๋ฅ ๋ฆฌ์คํธ ๋๊ฐ๋ฅผ ํฉ์น๊ณ nums = nums1 + nums2
nums๋ฅผ ์ํ ํ๊ณ
len(nums)๊ฐ ์ง์์ด๋ฉด ์๋ฅผ๋ค์ด 4๋ฉด 4/2, 4/2 + 1 ์ ์์น ํ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ๋๊ณ
len(nums)๊ฐ ํ์์ด๋ฉด ์๋ฅผ๋ค์ด 5๋ฉด 3์ ์์นํ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ๋จ
๐ฉํด๊ฒฐ
from typing import List
class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
nums = nums1 + nums2
nums.sort()
if len(nums) % 2 == 0:
return (nums[len(nums) // 2] + nums[len(nums) // 2 - 1]) / 2
else:
return nums[len(nums) // 2]