乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Leetcode-04 尋找兩個(gè)有序數(shù)組的中位數(shù)

       印度阿三17 2020-03-13

      令人頭禿的困難題
      僅寫(xiě)我的部分理解,詳見(jiàn)學(xué)習(xí)題解鏈接

      1、變量解釋
      LMax:切割點(diǎn)左側(cè)最大元素
      RMin:切割點(diǎn)右側(cè)最小元素
      cut:中位數(shù)的切割點(diǎn)
      eg:[1,2,3] LMax=RMin=2 ? [1,2] LMax=1 RMin=2

      2、中位數(shù)
      中位數(shù)切點(diǎn)滿(mǎn)足的條件有:(LMax1<=RMin2)&&(LMax2<=RMin1)&&(cut1 cut2==len1 len2)在這里插入圖片描述
      其中cut1 cut2==len1 len2(最終的切點(diǎn)下標(biāo)是len1 len2,實(shí)際對(duì)應(yīng)位置是len1 len2 1),因?yàn)樘摂M加后的數(shù)組長(zhǎng)度和為2len1 2len2 2。
      結(jié)果為result=(max(LMax1,LMax2) min(RMin1,RMin2))/2.0

      3、虛擬數(shù)組
      由于求中位數(shù)存在奇數(shù)偶數(shù)的問(wèn)題,我們虛擬的在數(shù)字之間加上一個(gè)#.
      2n 1永遠(yuǎn)都是奇數(shù),eg:1 2 3 變成 #1#2#3#
      這樣就可以保證下式成立
      LMaxi = (Ci-1)/2 位置上的元素
      RMini = Ci/2 位置上的元素
      在實(shí)際的計(jì)算中,沒(méi)有人真的在數(shù)字之間加入#,只是在計(jì)算時(shí)先乘以2,按照下標(biāo)取數(shù)時(shí)再除以2.

      4、如果一個(gè)數(shù)組完全小于等于另一個(gè)?
      C1 = 0 —— 數(shù)組1整體都在右邊了,所以都比中值大,中值在數(shù)組2中,簡(jiǎn)單的說(shuō)就是數(shù)組1割后的左邊是空了,所以我們可以假定LMax1 = INT_MIN
      C1 =2*len1 —— 數(shù)組1整體都在左邊了,數(shù)組1割后的右邊是空了,中值在數(shù)組2中,在數(shù)組1中你找不到元素能滿(mǎn)足(LMax2<=RMin1),所以我們可以假定RMin1= INT_MAX。
      C2 = 0 —— 數(shù)組2整體在右邊了,數(shù)組2割后的左邊是空了,所以我們可以假定LMax2 = INT_MIN.
      C2 = 2*len2 —— 數(shù)組2整體在左邊了,數(shù)組2割后的右邊是空了,為了讓LMax1 < RMin2 恒成立,我們可以假定RMin2 =INT_MAX,事實(shí)上,僅當(dāng)len1=len2時(shí)可能觸發(fā)這種結(jié)果。

      #define debug(x) cout<<#x<<x<<endl;
      #define max(a,b) (((a) > (b)) ? (a) : (b))
      #define min(a,b) (((a) < (b)) ? (a) : (b))
      class Solution {
      public:
      double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
              int len1=nums1.size();
              int len2=nums2.size();
              if(len1>len2)
              {
                  return findMedianSortedArrays(nums2,nums1);
              }
              int LMax1,LMax2,RMin1,RMin2,cut1,cut2,lf=0,rt=2*len1;
              while(lf<=rt)
              {
                  cut1=(lf rt)/2;
                  cut2=len1 len2-cut1;
                  LMax1=(cut1==0)?INT_MIN:nums1[(cut1-1)/2];
                  LMax2=(cut2==0)?INT_MIN:nums2[(cut2-1)/2];
                  RMin1=(cut1==2*len1)?INT_MAX:nums1[cut1/2];
                  RMin2=(cut2==2*len2)?INT_MAX:nums2[cut2/2];
                  if(LMax1>RMin2)
                      rt=cut1-1;
                  else if(LMax2>RMin1)
                      lf=cut1 1;
                  else
                     break;
              }
              return (max(LMax1,LMax2) min(RMin1,RMin2))/2.0;
          }
      };
      來(lái)源:https://www./content-4-658451.html

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多