leetcode 4. 寻找两个正序数组的中位数 二分
Published on 2022-11-17 23:03 in 暂未分类 with 林动

leetcode 4. 寻找两个正序数组的中位数 二分

    class Solution {
        public double findMedianSortedArrays(int[] nums1, int[] nums2) {
           int len1=nums1.length,len2=nums2.length;
           int total=len1+len2;
           if(total%2==1)
           {
        	   return getk(nums1,nums2,total/2+1);
           }
           else
           {
        	   return (getk(nums1,nums2,total/2)+getk(nums1,nums2,total/2+1))/2.0;
           }
        }
    
       public double getk(int []a,int []b,int k)
       {
    	   int lena=a.length;
    	   int lenb=b.length;
    	   int idxa=0,idxb=0;
    	   
    	   
    	   while(true)
    	   {
    		   if(idxa==lena)return b[idxb+k-1];
    		   if(idxb==lenb)return a[idxa+k-1];
    		   if(k==1)return Math.min(a[idxa], b[idxb]);
    		   
    		   int newidxa=Math.min(lena-1, idxa+k/2-1);
    		   int newidxb=Math.min(lenb-1, idxb+k/2-1);
    		   
    		   int p1=a[newidxa];int p2=b[newidxb];
    		   if(p1<=p2)
    		   {
    			   k-=(newidxa-idxa+1);
    			   idxa=newidxa+1;
    		   }
    		   else
    		   {
    			   k-=(newidxb-idxb+1);
    			   idxb=newidxb+1;
    		   }
    	   }
       }
    }
    
    posted @   林动  阅读(11)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
    · 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
    · C#/.NET/.NET Core优秀项目和框架2025年2月简报
    · DeepSeek在M芯片Mac上本地化部署
    · 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
    点击右上角即可分享
    微信分享提示