博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
阅读量:3924 次
发布时间:2019-05-23

本文共 1281 字,大约阅读时间需要 4 分钟。

给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。

请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

你可以假设 nums1 和 nums2 不会同时为空。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays

class Solution {
public: double findMedianSortedArrays(vector
& nums1, vector
& nums2) {
int length1 = nums1.size(); int length2 = nums2.size(); int mid1 = 0; int mid2 = 0; vector
temp1 = nums1; vector
temp2 = nums2; vector
temp3 ; if ((length1 + length2) % 2 == 0) {
mid1 = (length1 + length2)/2-1;//下标 mid2 = (length1 + length2) /2; } else {
mid1=mid2= (length1 + length2) / 2; }// cout << mid1 << " " << mid2 << endl; int i = 0, j = 0; int index = 0; while (i != length1 || j != length2) {
//只要有一个不为空 if (index <= mid2) {
if (i < length1&&j < length2) {
if (nums1[i] <= nums2[j]) {
temp3.push_back(nums1[i]); i++; } else {
temp3.push_back(nums2[j]); j++; } } else if (i>=length1&&j
= length2) { temp3.push_back(nums1[i]); i++; } index++; } else { break; } }// for (int t = 0; t < temp3.size(); t++) { // cout << temp3[t] << endl;// } double res; res = (double)(temp3[mid1] + temp3[mid2]) / 2; return res; }};

在这里插入图片描述

转载地址:http://jeugn.baihongyu.com/

你可能感兴趣的文章
蓝牙基带数据传输机理分析
查看>>
各种文件后缀名与打开方式大全
查看>>
利用Java的Properties 类读取配置文件信息
查看>>
用java读写ini配置文件
查看>>
java读取和修改ini配置文件实例代码
查看>>
网络字节序与主机字节序
查看>>
inet_aton和inet_network和inet_addr三者比较-《别怕Linux编程》之五
查看>>
组播通信
查看>>
setsockopt 设置socket 详细用法
查看>>
在局域网中实现多播功能
查看>>
什么叫组播地址(Multicast Address )?
查看>>
掌握IP地址知识 子网掩码与子网划分
查看>>
组播地址,IP组播地址
查看>>
什么是组播
查看>>
组播通信
查看>>
Linux网络编程一步一步学-UDP组播
查看>>
Linux C编程---网络编程
查看>>
在Linux创建库函数(1)
查看>>
在Linux创建库函数(2)
查看>>
在Linux创建库函数(3)
查看>>