給兩個排序好的整數陣列,陣列的長度是相同的,找到這兩個陣列的上中位數,也就是如果陣列是偶數的話,輸出前乙個中位數。
時間複雜度o(logn),空間複雜度o(1)
publicclass
upmedian
if(arr1.length!=arr2.length)
int start1 = 0;
int end1 = arr1.length-1;
int middle1 = 0;
int start2 = 0;
int end2 = arr2.length-1;
int middle2 =0;
//用來區分陣列長度為奇偶數
int offset = 0;
while(start1 else
if(arr1[middle1] else
}return
math.min(arr1[start1], arr2[start2]);
}public
static
void
main(string args) ;
int a2 = ;
system.out.println(getupmedian(a1, a2));
}}
這種題重在分析各種情況,
基本原理就是二分查詢,但是你要確定你查詢最合適的子陣列,這樣才能達到o(logn)的時間複雜度
演算法總結之 在兩個長度相等的排序陣列中找到上中位數
題目描述 arr1 和 arr2 長度都為n 求兩個陣列中所有數的上中位數 要求 時間複雜度 o logn 額外空間複雜度o 1 這道題目的方法比較好玩 這兩個陣列如下表示 arr1 start1.end1 arr2 start2.end2 如果start1 start2 那麼也有start2 en...
在兩個長度相等的排序陣列中找到上中位數
給定兩個有序陣列arr1和arr2,已知兩個陣列的長度都為n,求兩個陣列中所有數的上中位數。上中位數 假設遞增序列長度為n,若n為奇數,則上中位數為第n 2 1個數 否則為第n個數 輸入為 arr1 1,2,3,4 arr2 3,4,5,6 輸出為3 輸入為 arr1 0,1,2 arr2 3,4,...
在兩個長度相等的排序陣列中找到上中位數
在兩個長度相等的排序陣列中找到上中位數 給定兩個有序陣列arr1和arr2,已知兩個陣列的長度都為n,求兩個陣列中所有數的上中位數。上中位數 假設遞增序列長度為n,若n為奇數,則上中位數為第n 2 1個數 否則為第n個數 要求 時間複雜度為o l ogn o logn o logn 額外空間複雜度為...