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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Median of Two Sorted Arrays---LeetCode进阶路④

發布時間:2025/5/22 编程问答 18 如意码农
生活随笔 收集整理的這篇文章主要介紹了 Median of Two Sorted Arrays---LeetCode进阶路④ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 題目描述

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

You may assume nums1 and nums2 cannot be both empty.

分別有大小為m和n的有序數組nums1和nums2。

求兩個排序數組的中值。總的運行時復雜度應該是O(log (m+n))。

您可以假設nums1和nums2不能同時為空。

Example 1:

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

Example 2:

nums1 = [1, 2]
nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
  • 思路分析:

需求是輸出兩個有序數組的中值,想要實現很是簡單,最直接粗暴的方法是把兩個數組合并,找到相應元素,時間復雜度為O(m+n)。但題目明確要求時間復雜度需要控制在O(log(m+n)),就必須思考優化版方法啦。

小陌目前的優化方法是用尋找第k小數(因為給出的兩個數組皆有序,則k對應(m+n)/2):

每次比較兩個數組的第k/2個大的數:

  1. nums1[k/2] = nums[k/2],那么這個數就是我們要找的第K小數
  2. nums1[k/2] > nums[k/2],則說明第K小數不在nums2中前k/2個元素,可排除
  3. nums1[k/2] < nums[k/2],與2同理,排除nums1中前k/2個元素

    如此操作,每次都能排除k/2的元素(遞歸過程中,可能會出現數組個數不到k/2的情況,并不會影響算法,從另一個數組進行補充,多取相應元素即可)。

當k=1時,找到第K小數,結束遞歸

  • 原碼附錄:
  1. 簡單粗暴法
    class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
    int all = nums1.length+nums2.length;
    int[] result = new int[all];
    for(int i=0;i<all;i++){
    result[i] = (i<nums1.length)?nums1[i]:nums2[i-nums1.length];
    }
    Arrays.sort(result);
    return (all%2) ==1 ? result[(all-1)/2]:(double)(result[all/2]+result[all/2-1])/2;
    }
    }
  2. top k算法思想
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
if((nums1.length+nums2.length)%2==0){
return (findK(nums1,0,nums1.length-1,nums2,0,nums2.length-1,(nums1.length+nums2.length)/2)
+findK(nums1,0,nums1.length-1,nums2,0,nums2.length-1,(nums1.length+nums2.length)/2+1))/2.0;
}
else{
return findK(nums1,0,nums1.length-1,nums2,0,nums2.length-1,(nums1.length+nums2.length)/2+1);
}
} public int findK(int[] nums1,int n1,int n2,int[] nums2,int m1,int m2,int k){
int i = n2 - n1 +1;
int j = m2 - m1 +1; if(i>j){
return findK(nums2,m1,m2,nums1,n1,n2,k);
}
if(i == 0){
return nums2[m1+k-1];
}
if(k == 1){
return Math.min(nums1[n1],nums2[m1]);
} int mid1 = Math.min(k/2,i);
int mid2 = k - mid1;
if(nums1[n1+mid1-1]==nums2[m1+mid2-1]){
return nums1[n1+mid1-1];
}
else if(nums1[n1+mid1-1]>nums2[m1+mid2-1]){
return findK(nums1,n1,n1+mid1-1,nums2,m1+mid2,m2,k-mid2);
}
else{
return findK(nums1,n1+mid1,n2,nums2,m1,m2+mid2-1,k-mid1);
}
}
}

以下內容為可恥的自我推銷,完全可忽略(???ω???).?

此處厚臉皮的安利小透明公眾號 林夏夏

夏夏大大的英雄夢,
就是能和最喜歡的你,
分享一道算法題,
溫習一個編程上易忽視小細節,
品一份書香氤氳,
道最后一句晚安ヾ(?°?°?)??

總結

以上是生活随笔為你收集整理的Median of Two Sorted Arrays---LeetCode进阶路④的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91精品国产乱码久久 | 国产美女精品在线 | 亚洲精品乱码久久久久久久 | 亚洲一二三四视频 | 日本国产欧美 | 亚洲黄色激情 | 成人欧美一区二区三区小说 | 性欧美一区二区三区 | 婷婷色在线播放 | 久久婷婷网 | 成人吃奶视频 | 国产乱人乱精一区二视频国产精品 | 黑人干亚洲 | 国产丝袜视频在线观看 | 国产精品爽爽久久久久久 | 国产精品视频在线观看免费 | 美女扒开大腿让男人桶 | 碧蓝之海动漫在线观看免费高清 | 国产精品网站在线 | 丰满岳妇伦在线播放 | 国产成人午夜精品 | 在线综合色 | 91久精品| 国产伦精品一区二区三区照片91 | 亚洲精品爱爱 | 99riav3国产精品视频 | 亚洲一级av毛片 | 色在线综合| 午夜精品福利在线 | 老司机在线免费视频 | 一边摸一边做爽的视频17国产 | 欧美天天色 | 欧美黄网站 | 天天爽天天 | 天天操天天摸天天干 | 男人激烈吮乳吃奶爽文 | 久久99视频| 超碰国产人人 | 国产伦理久久精品久久久久 | 欧美在线导航 | 中文字幕一区二区三区乱码 | 色香蕉av | 成人理论影院 | 中国极品少妇xxxxx | 亚洲三级在线 | 亚洲激情黄色 | 国产精品偷乱一区二区三区 | 插插网站 | 国产精品资源网站 | 黄色天堂网站 | 激情导航| 亚洲AV无码成人精品区麻豆 | 神宫寺奈绪一区二区三区 | 亚洲av无码一区二区三区人 | 色播导航 | 久久久视屏 | 亚洲人性生活视频 | 活大器粗np高h一女多夫 | 性色tv | 亚洲一区欧美激情 | 精品国产一区二区三区四区精华 | 在线看免费av | 五月激情四射网 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产伊人自拍 | 真人真事免费毛片 | 色综合久久久无码中文字幕波多 | 国产微拍精品一区 | 国产伦精品一区二区三区在线观看 | 中字幕视频在线永久在线观看免费 | 欧美成人自拍 | 日本高清中文字幕 | 久久a久久 | 成人精品免费视频 | 日本精品视频在线观看 | 精品国产一二三区 | 日韩成人午夜影院 | 韩国91视频| 激情视频在线免费观看 | 手机看片一区二区 | 久久精品国产亚洲AV高清综合 | 国产精品久久久久不卡 | 男人天堂aaa | 午夜精品欧美 | 亚洲久久一区二区 | 国产第20页| 美日韩中文字幕 | 免费视频久久久 | 免费成人黄色av | 亚洲av永久无码精品一区二区国产 | 少妇高清精品毛片在线视频 | 污污污污污污www网站免费 | 欧美日韩国产网站 | 日韩精品视频网 | 亚洲精品三区 | 天天色天天干天天 | 99这里有精品视频 | 嫩草av久久伊人妇女超级a | 欧美啪啪网 |