前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[LeetCode] 4.Median of Two Sorted Arrays

[LeetCode] 4.Median of Two Sorted Arrays

作者头像
用户1148830
发布2018-01-03 17:16:23
4410
发布2018-01-03 17:16:23
举报

题目:There are two sorted arrays nums1 andnums2 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)).

即:给定两个有序数组,在给定的时间复杂度内返回这两个数组的中位数。

1.若为奇数,即为中间的数

2.若为偶数,则为中间两个数的和除以2

个人提交的解法如下:首先算出两个数组的长度和和中位数的index,然后两个数组分别有两个指针,找到指定的位置即可。

思路比较简单,可是要考虑到边界情况,代码如下:

代码语言:javascript
复制
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
	        double ans = 0;
	        int totalLength=nums1.length+nums2.length;
	        boolean odd=false;
	        if(totalLength%2!=0)
	        	odd=true;
	        int midIndex=totalLength/2;       
	        int count=0;
	        int i=0,j=0;
	        while(i<nums1.length&&j<nums2.length){
	        	int flag;//用于判断当前是哪个数组的指针移动
	        	if(nums1[i]<=nums2[j]){
	        		flag=1;
	        		i++;
	        	}
	        	else {
	        		j++;
	        		flag=2;
	        	}       	
	        	if((!odd&&(count==midIndex-1)||(count==midIndex))){
	        		if(flag==1)ans+=nums1[i-1];
	        		else ans+=nums2[j-1];
	        		if(count==midIndex)//index已经为中位数,则直接返回
	        			if(odd) return ans;
	        			else return ans/2;
	        	}
	        	count++;
	        }
	      if(odd&&ans!=0)//奇数并且前面已经找到了一个数直接返回
	    	  return ans;
	      if(odd&&ans==0){//否则在剩下的数组里面找一个数
	    	  if(i==nums1.length)
	    		  return nums2[midIndex-i];
	    	  else
	    		  return nums1[midIndex-j];
	      }
	      if(ans==0){//若为偶数的情况且前面一个中位数都没找到
	    	  if(i==nums1.length)
	    		  return (double)(nums2[midIndex-i-1]+nums2[midIndex-i])/2;
	    	  else
	    		  return (double)(nums1[midIndex-j-1]+nums1[midIndex-j])/2;
	      }
	      else{//为偶数且找到了一个中位数
	    	  if(i==nums1.length)
	    		  return (double)(nums2[midIndex-i]+ans)/2;
	    	  else
	    		  return (double)(nums1[midIndex-j]+ans)/2;
	      }
	   }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年09月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档