赞
踩
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
来源:力扣(LeetCode)
链接:4. 寻找两个正序数组的中位数 - 力扣(LeetCode) (leetcode-cn.com)
- double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
- double mid=0.0;
- int n=0,i=0,j=0;
- int *sum=(int *)malloc(sizeof(int)*(nums1Size+nums2Size));
- while(i<nums1Size&&j<nums2Size)
- {
- if(nums1[i]<nums2[j])
- {
- sum[n]=nums1[i];
- i++;
- }
- else
- {
- sum[n]=nums2[j];
- j++;
- }
- n++;
- }
- while(i<nums1Size)
- {
- sum[n]=nums1[i];
- n++;i++;
- }
- while(j<nums2Size)
- {
- sum[n]=nums2[j];
- n++;j++;
- }
- if((nums1Size+nums2Size)%2==1)
- {
- mid=sum[n/2]/1.0;
- return mid;
- }
- else
- {
- mid=(sum[(n+1)/2]+sum[(n-1)/2])/2.0;
- return mid;
- }
- }
本算法为暴力解法,自己写的第一道hard,一眼看上去没什么思路,就把第一眼想到的暴力算法写出来,没想到直接就过了,看答案的标解有点复杂,待博主搞清楚了再来补充。
本文到此结束,感谢大家的阅读,欢迎大家点赞评论互关,祝大家万事如意。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。