日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

double 数组_寻找两个有序数组的中位数

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 double 数组_寻找两个有序数组的中位数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是老皮;

題目地址:https://leetcode.com/problems/median-of-two-sorted-arrays/

題目描述:

給定兩個大小為 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.
  • 來源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

    思路:

    首先了解一下Median的概念,一個數組中median就是把數組分成左右等分的中位數。如下圖:這道題,很容易想到暴力解法,時間復雜度和空間復雜度都是 O(m+n), 不符合題中給出 O(log(m+n))時間復雜度的要求。我們可以從簡單的解法入手,試了一下,暴力解法也是可以被Leetcode Accept的. 分析中會給出兩種解法,暴力求解和二分解法。01

    解法一:暴力 (Brute Force)

    暴力解主要是要merge兩個排序的數組 (A,B)成一個排序的數組。用兩個 pointer(i,j), i 從數組 A起始位置開始,即 i=0開始, j 從數組 B起始位置, 即 j=0開始. 一一比較 A[i]和B[j]
  • 如果?A[i]<=B[j], 則把?A[i]?放入新的數組中,i往后移一位,即?i+1.
  • 如果?A[i]>B[j], 則把?B[j]?放入新的數組中,j往后移一位,即?j+1.
  • 重復步驟#1 和 #2,直到 i移到 A最后,或者 j移到 B最后。
  • 如果?j移動到?B數組最后,那么直接把剩下的所有?A依次放入新的數組中.
  • 如果?i移動到?A數組最后,那么直接把剩下的所有?B依次放入新的數組中.
  • Merge的過程如下圖。時間復雜度:O(m+n)-mislength of A,nislength of B空間復雜度:O(m+n)02

    解法二:二分查找 (Binary Search)

    由于題中給出的數組都是排好序的,在排好序的數組中查找很容易想到可以用二分查找(Binary Search)。這里對數組長度小的做二分, 保證數組A 和 數組B 做partition 之后,len(Aleft)+len(Bleft)=(m+n+1)/2-m是數組A的長度,n是數組B的長度,對數組A的做partition的位置是區間 [0,m]。如圖:下圖給出幾種不同情況的例子(注意但左邊或者右邊沒有元素的時候,左邊用 INF_MIN,右邊用 INF_MAX表示左右的元素:下圖給出具體做的partition 解題的例子步驟:時間復雜度:O(log(min(m,n))-mislength of A,nislength of B空間復雜度:O(1) - 這里沒有用額外的空間。03

    關鍵點分析

  • 暴力求解,在線性時間內merge兩個排好序的數組成一個數組。
  • 二分查找,關鍵點在于:
    • 要partition兩個排好序的數組成左右兩等份,partition需要滿足?len(Aleft)+len(Bleft)=(m+n+1)/2 - m是數組A的長度, n是數組B的長度
    • 并且partition后 A左邊最大(?maxLeftA), A右邊最小(?minRightA), B左邊最大(?maxLeftB), B右邊最小(?minRightB) 滿足?(maxLeftA <= minRightB && maxLeftB <= minRightA)
    有了這兩個條件,那么median就在這四個數中,根據奇數或者是偶數奇數:median =?max(maxLeftA, maxLeftB)偶數:median =?(max(maxLeftA,?maxLeftB)?+?min(minRightA,?minRightB))?/?2

    04

    代碼(Java code)

    解法一:暴力解法(Brute force)class?MedianTwoSortedArrayBruteForce?{public?double?findMedianSortedArrays(int[]?nums1,?int[]?nums2)?{int[]?newArr?=?mergeTwoSortedArray(nums1,?nums2);int?n?=?newArr.length;if?(n?%?2?==?0)?{//?evenreturn?(double)?(newArr[n?/?2]?+?newArr[n?/?2?-?1])?/?2;}?else?{//?oddreturn?(double)?newArr[n?/?2];}}private?int[]?mergeTwoSortedArray(int[]?nums1,?int[]?nums2)?{int?m?=?nums1.length;int?n?=?nums2.length;int[]?res?=?new?int[m?+?n];int?i?=?0;int?j?=?0;int?idx?=?0;while?(i?m?&&?j?if?(nums1[i]?<=?nums2[j])?{??????????res[idx++]?=?nums1[i++];}?else?{??????????res[idx++]?=?nums2[j++];}}while?(i?m)?{????????res[idx++]?=?nums1[i++];}while?(j?return?res;}}解法二:二分查找(Binary Search)class MedianSortedTwoArrayBinarySearch {public static double findMedianSortedArraysBinarySearch(int[] nums1, int[] nums2) {// do binary search for shorter length array, make sure time complexity log(min(m,n)).if (nums1.length > nums2.length) {return findMedianSortedArraysBinarySearch(nums2, nums1);}int m = nums1.length;int n = nums2.length;int lo = 0;int hi = m;while (lo <= hi) {// partition A position iint i = lo + (hi - lo) / 2;// partition B position jint j = (m + n + 1) / 2 - i;int maxLeftA = i == 0 ? Integer.MIN_VALUE : nums1[i - 1];int minRightA = i == m ? Integer.MAX_VALUE : nums1[i];int maxLeftB = j == 0 ? Integer.MIN_VALUE : nums2[j - 1];int minRightB = j == n ? Integer.MAX_VALUE : nums2[j];if (maxLeftA <= minRightB && maxLeftB <= minRightA) {// total length is evenif ((m + n) % 2 == 0) {return (double) (Math.max(maxLeftA, maxLeftB) + Math.min(minRightA, minRightB)) / 2;} else {// total length is oddreturn (double) Math.max(maxLeftA, maxLeftB);}} else if (maxLeftA > minRightB) {// binary search left half hi = i - 1;} else {// binary search right half lo = i + 1;}}return 0.0;}}
  • 總結

    以上是生活随笔為你收集整理的double 数组_寻找两个有序数组的中位数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 六月丁香色婷婷 | 日韩欧美91 | 欧美综合自拍亚洲综合图片区 | 成人h片在线观看 | 国产精品老牛影视 | 日韩三级久久 | 激情国产精品 | 日韩女优一区二区 | 香蕉视频网站在线观看 | 又骚又黄的视频 | 永久福利视频 | 久久久久久亚洲av无码专区 | 日韩av一区二区在线观看 | 顶级嫩模啪啪呻吟不断好爽 | 国产浮力第一页 | av日韩不卡 | 日本草逼视频 | 亚洲品质自拍视频 | 亚洲欧美自拍视频 | 狠狠干狠狠操 | 中文字幕第一页av | 九九热国产精品视频 | 成人p站在线观看 | 91久久久久国产一区二区 | 欧美精品在线观看一区二区 | 亚洲天天 | 密臀av一区二区 | xxxxhd欧美 | 亚洲综合影院 | 久久久噜噜噜久久 | 天天摸夜夜 | 欧美18—19性高清hd4k | 久久重口味 | 免费一级特黄特色毛片久久看 | 高清国产视频 | 久久久久无码国产精品一区李宗瑞 | 午夜精品一区二区三区在线视频 | av操操| 亚洲第一免费播放区 | 午夜激情亚洲 | 男女男精品网站 | 小箩莉末发育娇小性色xxxx | 国产男男gay体育生网站 | 日韩黄片一区二区三区 | 国产一区二区三区色淫影院 | 少妇乱淫 | 国产簧片 | 国产一级做a爱片久久毛片a | 日日麻批免费视频播放 | 特黄色一级片 | av网站在线免费观看 | 婷婷在线免费观看 | 九九久久免费视频 | 性感美女在线 | 性做爰裸体按摩视频 | 奇米影视色 | 男男做爰猛烈叫床爽爽小说 | 精品国产三级片在线观看 | 久久久久久久艹 | 丰满岳乱妇在线观看中字无码 | 日韩乱论 | 国产大片在线观看 | 欧美日韩一区二区视频在线观看 | 在线中文天堂 | 天海翼一区二区 | 齐天大性床战铁扇公主 | 激情综合六月 | 黑人操亚洲美女 | 一级肉体全黄裸片 | 国产男女裸体做爰爽爽 | 欧美 变态 另类 人妖 | 日本一级大毛片a一 | 免费在线你懂的 | 尤物国产在线 | 厨房性猛交hd| 国产精品亚洲视频 | 国产午夜电影在线观看 | 欧美成人一区二区视频 | 日韩一区二区三免费高清在线观看 | 性欧美lx╳lx╳ | 美女脱了裤子让男人捅 | 国产成人在线电影 | 欧美福利在线视频 | 一区二区免费av | 成人a毛片久久免费播放 | 黄页视频在线观看 | 91宅男| 天堂网av手机版 | 高h av| 九一av| 美日韩精品 | 人物动物互动39集免费观看 | 五月天免费网站 | 国产精品1000部啪视频 | 中文字幕乱码亚洲精品一区 | 国产视频久久久久久 | 色婷婷精品国产一区二区三区 | 久久国产一区二区三区 | 少妇熟女视频一区二区三区 |