4 尋找兩個正序陣列的中位數

2021-10-24 15:36:20 字數 1173 閱讀 2248

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...