国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LeetCode #4 Median of Two Sorted Arrays

2019-11-06 06:48:36
字體:
來源:轉載
供稿:網友

Description

There are two sorted arrays nums1 and nums2 of size m and n respectively.

Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).


Example

nums1 = [1, 3] nums2 = [2] The median is 2.0

nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5


Analysis

題目難度為:hard 起初以為這道題并不難,但是開始著手做了之后才發現了這道的復雜性。首先看題目要求,對于時間復雜度的要求是O(log(m+n)),那么首先想到的方法必然是二分法,或者近似二分法的方法。我們需要找到中點,那么也就是說,我們需要找到第(m+n)/2大的數;也就是說,要有(m+n)/2-1個數比中位數小,取兩個數組的第(m+n)/4來進行比較;分成三種情況:1、a>b,說明b的前面(m+n)/4個數一定小于中位數,可以排除;2、a

Code(c )

int min (int a, int b) { if (a > b) return b; else return a;}double findKth(int *a, int m, int *b, int n, int k) { if (m > n) return findKth(b, n, a, m, k); if (m == 0) if () return b[k - 1]; if (k == 1) return min(a[0], b[0]); //divide k into two parts int pa = min(k / 2, m), pb = k - pa; if (a[pa - 1] < b[pb - 1]) return findKth(a + pa, m - pa, b, n, k - pa); else if (a[pa - 1] > b[pb - 1]) return findKth(a, m, b + pb, n - pb, k - pb); else return a[pa - 1]; } double findMedianSortedArrays(int *A, int m, int *B, int n) { int total = m + n; if (total & 0x1) { return findKth(A, m, B, n, total / 2 + 1); } else { return ((findKth(A, m, B, n, total / 2) + findKth(A, m, B, n, total / 2 + 1))/2; }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘孜| 巴林左旗| 旬邑县| 磐石市| 扶沟县| 乐陵市| 当涂县| 治县。| 汝州市| 泸定县| 梁河县| 高陵县| 九龙县| 德庆县| 富顺县| 鹤峰县| 定安县| 承德市| 揭西县| 卓尼县| 鹤壁市| 黄梅县| 商河县| 旅游| 克东县| 陆丰市| 额敏县| 兴海县| 奉贤区| 德兴市| 漯河市| 焦作市| 奉新县| 忻州市| 礼泉县| 昌平区| 太康县| 湖北省| 靖江市| 象山县| 佛学|