分治算法求两数组中位数
来源:互联网 发布:气步枪瞄准器 知乎 编辑:程序博客网 时间:2024/06/02 07:44
LEECODE Algorithm 4. Median of Two Sorted Arrays
本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:
- 题目
- 代码块
- 想法
Description
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)).
Example 1:
nums1 = [1, 3]
nums2 = [2]The median is 2.0
Example 2:
nums1 = [1, 2]
nums2 = [3, 4]The median is (2 + 3)/2 = 2.5
代码
class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { vector<int> nums3; double a; double n = nums1.size(),m = nums2.size(); int i, j, k; i = j = k = 0; while (i < n && j < m) { if (nums1[i] < nums2[j]) nums3.push_back(nums1[i++]); else nums3.push_back(nums2[j++]); } while (i < n) nums3.push_back(nums1[i++]); while (j < m) nums3.push_back(nums2[j++]); a = (nums3.at((m+n-1) /2) + nums3.at((m+n) /2)) ; a/=2; return a; }};
想法
题目要求的复杂度是O(log(n+m)),那也就是说需要采用分治,归并排序复杂度是nlogn,那么在本题中,也就是(n+m)log(n+m),由于左右已经排好序,没必要使用归并算法,因此直接采用归并思想中的合并就可以了,本题中复杂度还是O(m+n).
阅读全文
0 0
- 分治算法求两数组中位数
- 分治策略 求两同长数组的中位数问题
- 一次求两序列中位数分治算法探索历程
- 求两数组中位数
- 求两数组中位数
- 算法实验之分治法求中位数
- 算法实验之分治法求中位数
- 【算法】【分治】两个排序数组的中位数
- 求两个等长有序数组的中位数的logN算法 分治法
- 求两个等长有序数组的中位数的logN算法 分治法
- 求两个等长有序数组的中位数的logN算法 分治法
- 分治法求 两个数组 X 和 Y 的中位数
- 【算法题】两有序数组中位数
- 【算法】无序数组中求中位数
- 【翻自LeetCode】求两排序后数组的中位数
- 分治算法 求数组逆序数
- 分治算法求数组的最大值最小值
- 俩数组求中位数
- AOP 学习
- InnoDB关键特性之Insert buffer
- Two Sum
- 文件读取权限
- 一根反斜杠“\”引发的事件
- 分治算法求两数组中位数
- 实时监控php-fpm状态
- 初入帝都 17.07.29
- Babel核心用法记要
- 解决QQ群、讨论组上传文件,由于网络原因上传失败?
- Gradle 完整指南
- first blog
- CentOS 7 安装 MariaDB 10.1
- 游戏通讯方式