leetcode4
2015-09-24 15:35
232 查看
Median of Two Sorted Arrays
求两个有序数组的中位数。假设数组长度为m和n
题目要求时间复杂度为O(log(m+n))
当时没考虑时间复杂度,觉着把两个有序数组按照插入的方法合并,再找中位数就好了。
这时也分为两种情况:
m+n为偶数(两数的平均),m+n为奇数。
时间复杂度可能达不到要求,但是居然通过了:
代码:
这个之前接触过,后来忘了。。。
之后再学习一遍以后再完善博文。
求两个有序数组的中位数。假设数组长度为m和n
题目要求时间复杂度为O(log(m+n))
当时没考虑时间复杂度,觉着把两个有序数组按照插入的方法合并,再找中位数就好了。
这时也分为两种情况:
m+n为偶数(两数的平均),m+n为奇数。
时间复杂度可能达不到要求,但是居然通过了:
代码:
class Solution{ public: double findMedianSortedArrays(vector<int>&num1,vector<int>&num2){ vector<int>result; vector<int>::iterator it1=num1.begin(); vector<int>::iterator it2=num2.begin(); while(it1!=num1.end()||it2!=num2.end()) { if(it1==num1.end()) { result.insert(result.end(),it2,num2.end()); break; } if(it2==num2.end()) { result.insert(result.end(),it1,num1.end()); break; } if(*it1 == *it2) { result.push_back(*it1); result.push_back(*it1); it1++; it2++; } else if(*it1<*it2) { result.push_back(*it1); it1++; } else { result.push_back(*it2); it2++; } } int length=result.size(); if(length%2 == 0) { return double((result[length/2]+result[length/2 - 1])/2.0); } else { return double(result[(length-1)/2]*1.0); } } };后来在网上看到有以求第Kth大的数算法为基础写的代码。
这个之前接触过,后来忘了。。。
之后再学习一遍以后再完善博文。
相关文章推荐
- Jquery中AJAX参数详细说明
- 【双节来袭】迅为4412开发板学习板超值套餐
- 理解angularJS中作用域$scope
- vs 配置
- poj1087&&hdu1526 最大流
- MACHINE-CHECK 相关的MSR(三) - Error-Reporting Register Banks
- PHP预定义超全局数组 $_POST 、$_REQUEST 讲解
- GPIO复用引脚的释放及gpio-leds的注册
- 外排序
- linq的各项高级查询
- 如何加速您的Wordpress网站
- 问题:oracle LISTAGG 连接字符串;结果:Oracle 连接字符串的方法
- Windows传感器编程之获取传感器数据
- nginx日志切割
- 基本的Web控件三
- J2ee开发环境搭建之(三)eclipse集成JDK+Tomcat
- 使用Backbone.js开发Chrome便签插件
- 【转】Hibernate HQL 占位符【转】
- 设置tomcat的运行内存
- Linq技术1