LeetCode-Median of Two Sorted Arrays-解题报告
2015-07-08 21:29
169 查看
原题链接 https://leetcode.com/problems/median-of-two-sorted-arrays/
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) {
int i = 0, j = 0, s = 0, m = nums1.size(), n = nums2.size();
bool flag = false;
int ans = 0;
int mid;
if ((m + n) & 1)flag = true, mid = (m + n) / 2 + 1;
else mid = (m + n) / 2;
while (s != mid)
{
if (i < m && j < n)
{
if (nums1[i] > nums2[j])ans = nums2[j], j++;
else if (j < n)ans = nums1[i], i++;
}
else if (i >= m && j < n)
ans = nums2[j++];
else if (i < m && j >= n)
ans = nums1[i++];
s++;
}
if (flag)return ans;
else
{
if (j >= n && i < m)
return (double)(ans + nums1[i]) / 2;
if (i >= m && j < n)
return (double)(ans + nums2[j]) / 2;
return (double)(ans + min(nums1[i], nums2[j])) / 2;
}
}
};
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) {
int i = 0, j = 0, s = 0, m = nums1.size(), n = nums2.size();
bool flag = false;
int ans = 0;
int mid;
if ((m + n) & 1)flag = true, mid = (m + n) / 2 + 1;
else mid = (m + n) / 2;
while (s != mid)
{
if (i < m && j < n)
{
if (nums1[i] > nums2[j])ans = nums2[j], j++;
else if (j < n)ans = nums1[i], i++;
}
else if (i >= m && j < n)
ans = nums2[j++];
else if (i < m && j >= n)
ans = nums1[i++];
s++;
}
if (flag)return ans;
else
{
if (j >= n && i < m)
return (double)(ans + nums1[i]) / 2;
if (i >= m && j < n)
return (double)(ans + nums2[j]) / 2;
return (double)(ans + min(nums1[i], nums2[j])) / 2;
}
}
};
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- C++ Custom Control控件向父窗体发送对应的消息
- C++中拷贝构造函数的应用详解
- C++去除输入行中空白的方法