class
solution
(object):
deffindmediansortedarrays
(self, nums1, nums2)
:"""
:type nums1: list[int]
:type nums2: list[int]
:rtype: float
"""m =
len(nums1)
n =len(nums2)
mid =
(m+n)/2
pre =-1
cur =-1
i =0 j =
0while
(i < m and j < n):if
(nums1[i]
< nums2[j]):
pre = cur
cur = nums1[i]
i +=
1else
: pre = cur
cur = nums2[j]
j +=1if
(i + j > mid)
:break
if(i < m)
:while
((i+j)
<=mid)
: pre=cur
cur = nums1[i]
i +=1if
(j < n)
:while
((i+j)
<=mid)
: pre=cur
cur = nums2[j]
j +=1if
((m+n)%2
==0):
return
(pre+cur)
/2.0
return cur
思路:
設定兩個變數,cur儲存當前的值,pre儲存當前值的前乙個值。遍歷兩個陣列並將對應值進行對比,較小的值賦值給cur,原cur值賦值給pre。當總數達到mid要求時停止遍歷。如果兩陣列長度和為偶數,則返回(pre+cur)/2.0,否則返回cur。
注意點:
錯誤原因是(pre+cur)/2.0的2.0寫成了2導致結果一直報錯。
4 尋找兩個正序陣列的中位數
思路 我現在還沒有進行優化,大概就是合併陣列 參照之前的順序表合併 然後如果合併陣列的大小sum是偶數,返回sum 2和sum 2 1兩個元素除以二,如果sum是奇數則直接返回sum 2的元素 double findmediansortedarrays int nums1,int nums1size...
4 尋找兩個正序陣列的中位數
給定兩個大小為 m 和 n 的正序 從小到大 陣列nums1和nums2。請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設nums1和nums2不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0示例 2 nums1 1,2 nu...
4 尋找兩個正序陣列的中位數
題目描述 給定兩個大小為 m 和 n 的正序 從小到大 陣列 nums1 和 nums2。請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2...