尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列
nums1
和
nums2
。
請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 O(log(m + n))。
你可以假設
nums1
和
nums2
不會同時為空。
示例 1:
nums1 = [1, 3] nums2 = [2] 則中位數是 2.0
示例 2:
nums1 = [1, 2] nums2 = [3, 4] 則中位數是 (2 + 3)/2 = 2.5
public class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int cur1 = 0; int cur2 = 0; int len1 = getArrayLength(nums1); int len2 = getArrayLength(nums2); int res = 0; for (int i = 0; i < (len1 + len2 + 1) >> 1; i++) { if (cur1 >= len1 || cur2 < len2 && nums1[cur1] > nums2[cur2]) { res = nums2[cur2++]; } else { res = nums1[cur1++]; } } if (((len1 + len2) & 1) != 0) { return (double) res; } else { if (cur1 >= len1) { return ((double) res + (double) nums2[cur2]) / 2; } if (cur2 >= len2) { return ((double) res + (double) nums1[cur1]) / 2; } return ((double) res + (double) Math.min(nums1[cur1], nums2[cur2])) / 2; } } private int getArrayLength(int[] arr) { return arr == null ? 0 : arr.length; } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31551894/viewspace-2644400/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LeetCode--尋找兩個有序陣列的中位數(05)LeetCode陣列
- LeetCode第4題:尋找兩個有序陣列的中位數LeetCode陣列
- [LeetCode 刷題] 4. 尋找兩個有序陣列的中位數 (Hard)LeetCode陣列
- LeetCode解題(C++)-4. 尋找兩個有序陣列的中位數LeetCodeC++陣列
- 尋找兩個正序陣列中的中位數陣列
- 兩個有序陣列的中位數陣列
- 4. 尋找兩個正序陣列的中位數陣列
- 【LeetCode Hot 100】4. 尋找兩個正序陣列的中位數LeetCode陣列
- GO實現:leetcode之尋找兩個正序陣列的中位數GoLeetCode陣列
- 力扣演算法題:尋找兩個正序陣列的中位數力扣演算法陣列
- 尋找兩個正序陣列的中位數問題,方法一:合併陣列檢索法陣列
- LeetCode題集-4 - 尋找兩個有序陣列的中位數,圖文並茂,六種解法,萬字講解LeetCode陣列
- 尋找陣列中和為定值的兩個數陣列
- leetcode 4. Median of Two Sorted Arrays 尋找兩個正序陣列的中位數(困難)LeetCode陣列
- 將兩個有序陣列合併為一個有序陣列陣列
- 兩個有序陣列如何合併成一個有序陣列陣列
- LeetCode-兩個排序陣列的中位數LeetCode排序陣列
- 4. 兩個排序陣列的中位數排序陣列
- 用 PHP 在 力扣 刷演算法 [尋找兩個正序陣列的中位數]{有空就更}PHP力扣演算法陣列
- 合併兩個有序陣列陣列
- [Python手撕]兩個升序陣列的中位數Python陣列
- 演算法-兩個排序陣列的中位數演算法排序陣列
- LeetCode 4. 兩個排序陣列的中位數LeetCode排序陣列
- LeetCode-4. 兩個排序陣列的中位數LeetCode排序陣列
- 88、合併兩個有序陣列陣列
- 找一個陣列中特別的數陣列
- 88. 合併兩個有序陣列陣列
- 【Java】尋找陣列中“主要元素”Java陣列
- 【遞迴打卡2】求兩個有序陣列的第K小數遞迴陣列
- 尋找陣列中第K大的元素陣列
- 尋找陣列的中心索引陣列索引
- 【LeetCode】88. 合併兩個有序陣列LeetCode陣列
- lgP5788 陣列中尋找右側第一個大於它的數陣列
- 18.合併兩個有序陣列(簡單)陣列
- LeetCode合併兩個有序陣列(逆向雙指標)LeetCode陣列指標
- 從0打卡leetcode之day 5 ---兩個排序陣列的中位數LeetCode排序陣列
- 每日一道 LeetCode (19):合併兩個有序陣列LeetCode陣列
- LeetCode每日一題:合併兩個有序陣列(No.88)LeetCode每日一題陣列