04尋找兩個陣列的中位數

2022-03-17 07:03:15 字數 920 閱讀 4601

from typing import list

class solution:

def findmediansortedarrays(self, nums1: list[int], nums2: list[int]) -> float:

# 這樣寫可以不用判斷兩個陣列和為奇數和偶數的情況

index1 = (len(nums1) + len(nums2) + 1) // 2

index2 = (len(nums1) + len(nums2) + 2) // 2

# 尋找兩個陣列第k小的數字

def dfs(num_list1,num_list2,k):

# 使用讓num_list1為陣列長度大的陣列

if len(num_list1) < len(num_list2):

num_list1,num_list2 = num_list2,num_list1

# 若有乙個陣列為空,可直接返回

if len(num_list2) == 0:return num_list1[k - 1]

if k == 1:

return min(num_list1[0],num_list2[0])

# 防止溢位

t = min(len(num_list2),k // 2)

# 每次切割出一部分陣列,

if num_list1[t - 1] >= num_list2[t - 1]:

return dfs(num_list1,num_list2[t:],k - t)

else:

return dfs(num_list1[t:],num_list2,k - t)

return (dfs(nums1,nums2,index1) + dfs(nums1,nums2,index2)) / 2

04 尋找兩個有序陣列的中位數

c 語法 參考文獻 給定兩個大小為 m 和 n 的有序陣列nums1和nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 可以假設nums1和nums2不會同時為空 example nums1 1,3 nums2 2 return 中位數是 2.0最初的版本...

leetcode 兩個陣列中位數

問題描述 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 我的解答 packa...

尋找兩個有序陣列的中位數

尋找兩個有序陣列的中位數 user hihone date 2019 1 31 time 16 32 description 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 ...