LeetCode(40) Median of Two Sorted Arrays (两排序数组中位数)
2015-09-22 21:18
375 查看
题目描述
There are two sorted arrays nums1 and nums2 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)).题目要求寻找两个已排序数组的中位数
解题代码
本题我使用了比较傻瓜的方法去解决这个问题。如果两个数组均不为空,则将两个数组合并为一个数组,然后再获得合并后的数组的中位数。class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { if (nums1.empty() && nums2.empty()) { return 0; } else if (!nums1.empty() && nums2.empty()) { int size = nums1.size(); if (size % 2 == 0) return (nums1[size / 2] + nums1[size / 2 - 1]) / 2.0; else return nums1[size / 2]; } else if (nums1.empty() && !nums2.empty()) { int size = nums2.size(); if (size % 2 == 0) return (nums2[size / 2] + nums2[size / 2 - 1]) / 2.0; else return nums2[size / 2]; } bool isEven = (nums1.size() + nums2.size()) % 2 == 0; int count = (nums1.size() + nums2.size()) / 2 + 1; vector<int> union_nums; vector<int>::iterator it1 = nums1.begin(); vector<int>::iterator it2 = nums2.begin(); vector<int>::iterator it1_end = nums1.end(); vector<int>::iterator it2_end = nums2.end(); for(size_t i = 0; i != count; ++i) { if(it1 != it1_end && it2 != it2_end) { if(*it1 < * it2) { union_nums.push_back(*it1); it1++; } else { union_nums.push_back(*it2); it2++; } } else if (it1 == it1_end) { union_nums.push_back(*it2); it2++; } else { union_nums.push_back(*it1); it1++; } } if(isEven) return (union_nums[count-1]+union_nums[count-2])/2.0; else return union_nums[count-1]; } };
相关文章推荐
- listview加载更多
- 模式匹配算法
- 关于使用模态窗口presentViewController跳转黑屏的解决
- BestCoder#56 Clarke and puzzle
- hdu acm 2569
- 关于计算机领域中 Provisioning 词的准确含义
- sudo简介
- 20150922——第一个项目总结
- snort规则解析
- OpenGL投影矩阵与相机模型(Set Projection Matrix for Pinhole Camera Model)
- 广联达2016西安研发笔试题
- ViewPagerIndicator-master源码分析 3
- Pascal's Triangle II
- CRM-BaseDao的抽取
- maven 学习总结(三)——使用Maven构建项目
- poj Asteroids (二分匹配之匈牙利算法)
- (2.3.11)Java中HashMap遍历的两种方式
- 第四十四天 指南针、百度地图
- grials相关安装文件可以从我的网盘下载
- 嵌入式linux的tftp安装配置及tftp命令用法