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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode题库 4.寻找两个正序数组的中位数(双指针法 C实现)

發(fā)布時間:2024/4/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode题库 4.寻找两个正序数组的中位数(双指针法 C实现) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 解析
  • 思路
  • 代碼

解析

Median_0指向合并數(shù)組中位數(shù)之左
Median_1指向合并數(shù)組中位數(shù)之右
例1:[1,3,4],[2,5]
合并為[1,2,3,4,5]
Median_0=2(指向3)
Median_1=2(指向3)

例2:[1,4],[2,5]
合并為[1,2,4,5]
Median_0=1(指向2)
Median_1=2(指向4)

Temp0,Temp1分別用于存儲Median_0(中位數(shù)之左),Median_1(中位數(shù)之右)指向的數(shù)據(jù)

p指向當(dāng)前已合并數(shù)組末尾一個元素的下標(biāo)
p_0,p_1分別用于遍歷nums1,nums2

思路

模擬合并兩有序數(shù)組(合并有序數(shù)組)
合并過程中
當(dāng)p=Median_0時,說明合并數(shù)組前一個插入值nums1[p_0-1]或者nums2[p_1-1]位于中位數(shù)之左,則將前一個插入值賦予Temp0
當(dāng)p=Median_1時,說明合并數(shù)組前一個插入值nums1[p_0-1]或者nums2[p_1-1]位于中位數(shù)之右,則將前一個插入值賦予Temp1
并且由于Median_0<=Median_1,所以Temp0必然先于Temp1被搜尋到
于是,在Temp1被搜尋到之后,便可終止程序

代碼

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){int Median_0,Median_1,p=-1,p_0=0,p_1=0;int Temp=(nums1Size+nums2Size)%2;double Temp0,Temp1;if(Temp){Median_0=(nums1Size+nums2Size)/2+1;Median_1=Median_0;}else{Median_0=(nums1Size+nums2Size)/2;Median_1=Median_0+1;}Median_0--;Median_1--;while(p_0<nums1Size || p_1<nums2Size){if(p_0<nums1Size && p_1<nums2Size){if(nums1[p_0]<=nums2[p_1]){p_0++;p++;if(Median_0==p){Temp0=nums1[p_0-1];}if(Median_1==p){Temp1=nums1[p_0-1];break;}}else{p_1++;p++;if(Median_0==p){Temp0=nums2[p_1-1];}if(Median_1==p){Temp1=nums2[p_1-1];break;}}}else{if(p_0<nums1Size && p_1>=nums2Size){p_0++;p++;if(Median_0==p){Temp0=nums1[p_0-1];}if(Median_1==p){Temp1=nums1[p_0-1];break;}}else{p_1++;p++;if(Median_0==p){Temp0=nums2[p_1-1];}if(Median_1==p){Temp1=nums2[p_1-1];break;}}}}return (Temp0+Temp1)/2; }

總結(jié)

以上是生活随笔為你收集整理的Leetcode题库 4.寻找两个正序数组的中位数(双指针法 C实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。