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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

leetCode-第四题求两个数组的中位数

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetCode-第四题求两个数组的中位数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

兩數組中的中位數

原題鏈接: 兩數組的中位數

給定兩個大小分別為 m 和 n 的正序(從小到大)數組 nums1 和 nums2。請你找出并返回這兩個正序數組的 中位數 。

示例 1:

輸入:nums1 = [1,3], nums2 = [2]
輸出:2.00000
解釋:合并數組 = [1,2,3] ,中位數 2
示例 2:

輸入:nums1 = [1,2], nums2 = [3,4]
輸出:2.50000
解釋:合并數組 = [1,2,3,4] ,中位數 (2 + 3) / 2 = 2.5
示例 3:

輸入:nums1 = [0,0], nums2 = [0,0]
輸出:0.00000
示例 4:

輸入:nums1 = [], nums2 = [1]
輸出:1.00000
示例 5:

輸入:nums1 = [2], nums2 = []
輸出:2.00000

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

合并數組并進行排序,但是這樣算法復雜度就不符合題目中的要求了,因此在C++實現的時候結合了二分查找的方法進行實現;
go解題:

package mainimport ("fmt""sort" )/* 輸入:nums1 = [1,3], nums2 = [2] 輸出:2.00000 解釋:合并數組 = [1,2,3] ,中位數 2*/func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {numsSet := make([]int, 0, 6)numsSet = append(numsSet, nums1...)numsSet = append(numsSet, nums2...)sort.Ints(numsSet)numsLen := len(numsSet)if numsLen == 0 {return 0.0000}fmt.Println(numsSet)if numsLen%2 == 0 {return (float64(numsSet[numsLen/2-1]) + float64(numsSet[numsLen/2])) / 2} else {return float64(numsSet[numsLen/2])} }func main() {nums1 := []int{1, 2}nums2 := []int{3, 4}median := findMedianSortedArrays(nums1, nums2)fmt.Println(median) }

解題思路

如下數組:

我們需要想辦法找到一條線能將兩個數組按照左變小右邊大的方式分開,那么在取中位數的時候就能根據線所在的情況取出兩個數組中的中位數

C++代碼按照二分查找方式實現的代碼:

// // Created by andrew on 2021/3/7. // #include <iostream> #include <vector>using namespace std;class Solution { public:static double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {size_t len1 = 0, len2 = 0;len1 = nums1.size();len2 = nums2.size();size_t sumLen = len1 + len2;int i = 0, j = 0;bool dataStatus = false;int data1 = 0, data2 = 0, data3 = 0;if (sumLen % 2 == 0) {dataStatus = true;}for (i = 0, j = 0; i + j <= sumLen / 2;) {if (i >= len1) {data3 = data2;data2 = data1;data1 = nums2[j];j++;continue;}if (j >= len2) {data3 = data2;data2 = data1;data1 = nums1[i];i++;continue;}if (nums1[i] >= nums2[j]) {data3 = data2;data2 = data1;data1 = nums2[j];j++;} else {data3 = data2;data2 = data1;data1 = nums1[i];i++;}}if (dataStatus) {return ((double) data2 + (double) data1) / 2;} elsereturn (double) data1;} };int main(int argc, char *argv[]) {vector<int> nums1 = {1};vector<int> nums2 = {2,3, 4};cout << Solution::findMedianSortedArrays(nums1, nums2) << endl;return 0; }

實際執行結果可以看出,使用該方法在時間點相同的情況下,官方32ms 自己的代碼執行需要24ms,比官方代碼快8ms左右

總結

以上是生活随笔為你收集整理的leetCode-第四题求两个数组的中位数的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 中文在线观看免费网站 | 国产成人无码一区二区在线观看 | 3d动漫精品啪啪一区二区免费 | 91福利免费视频 | 玩弄少妇人妻 | 日本成人久久 | 日本888xxxx| 91久久久久一区二区 | heyzo亚洲| 污黄视频网站 | 日本伦理片在线看 | 亚洲一区二区美女 | 精品久久无码中文字幕 | 天海翼视频在线观看 | 永久免费在线看片 | 波多野结衣av中文字幕 | 三级全黄的视频 | 夜夜嗨av一区二区 | 黄色香蕉软件 | 好看的av在线| 四虎色 | 免费网站观看www在线观看 | 亚洲欧美专区 | av爱爱网站| jizz亚洲女人高潮大叫 | 天天操天天插 | 牛牛影视免费观看 | 亚洲精品视频在线观看免费 | 自拍偷拍激情小说 | 最近日韩中文字幕 | 天堂视频在线 | 夜夜噜噜噜 | 九九综合九九综合 | 99riav1国产精品视频 | 熟女人妻在线视频 | 精品久久久久久久久久久久久久久 | 日韩精品久久久久久免费 | 影音先锋男人天堂 | 深夜成人福利 | 精品自拍一区 | 日韩欧美高清在线观看 | 五月综合色 | 亚洲婷婷久久综合 | 激情都市一区二区 | 精品二三区 | 成人av资源在线 | 男女透逼视频 | 午夜毛片电影 | 少妇高潮露脸国语对白 | 91精品黄色 | 中文字幕无线码一区 | 欧美午夜在线观看 | 99re国产在线 | 国产亚洲精品久久久久久 | 中文字幕电影一区二区 | np视频| 乡村乱淫 | 丰满肥臀噗嗤啊x99av | 精品久久久无码中文字幕边打电话 | 亚洲欧美另类综合 | av网站在线免费观看 | 亚洲社区一区二区 | 丨国产丨调教丨91丨 | 欧美日韩一卡 | 亚洲色图日韩精品 | 高清视频一区二区 | 青青草网站 | 91国产丝袜播放在线 | 女女爱爱视频 | 18禁裸男晨勃露j毛免费观看 | 国产无限制自拍 | 97视频在线看 | 91人人澡人人爽人人精品 | 2024av视频 | 久久77777 | 成人在线观看免费网站 | 午夜综合网 | 在线国产一区二区 | 久久精品欧美一区二区三区麻豆 | 激情图片在线观看 | 都市激情一区 | 污片免费在线观看 | 一区二区三区激情 | 性爱视频日本 | 国产啊v在线 | 成年免费视频 | 爱爱小视频网站 | 少妇激情视频 | 久久久久久久久久久久久久av | 欧美激情综合网 | 99久久久无码国产 | 超碰97最新 | 天天射寡妇射 | 久久久无码精品亚洲国产 | www.婷婷.com| 午夜宅男影院 | 国产精品一区二区在线免费观看 | 亚洲av成人无码一二三在线观看 | 无码人妻精品一区二区 |