文章目录

  • 解析
  • 思路
  • 代码

解析

Median_0指向合并数组中位数之左
Median_1指向合并数组中位数之右
例1:[1,3,4],[2,5]
合并为[1,2,3,4,5]
Median_0=2(指向3)
Median_1=2(指向3)

例2:[1,4],[2,5]
合并为[1,2,4,5]
Median_0=1(指向2)
Median_1=2(指向4)

Temp0,Temp1分别用于存储Median_0(中位数之左),Median_1(中位数之右)指向的数据

p指向当前已合并数组末尾一个元素的下标
p_0,p_1分别用于遍历nums1,nums2

思路

模拟合并两有序数组(合并有序数组)
合并过程中
当p=Median_0时,说明合并数组前一个插入值nums1[p_0-1]或者nums2[p_1-1]位于中位数之左,则将前一个插入值赋予Temp0
当p=Median_1时,说明合并数组前一个插入值nums1[p_0-1]或者nums2[p_1-1]位于中位数之右,则将前一个插入值赋予Temp1
并且由于Median_0<=Median_1,所以Temp0必然先于Temp1被搜寻到
于是,在Temp1被搜寻到之后,便可终止程序

代码

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){int Median_0,Median_1,p=-1,p_0=0,p_1=0;int Temp=(nums1Size+nums2Size)%2;double Temp0,Temp1;if(Temp){Median_0=(nums1Size+nums2Size)/2+1;Median_1=Median_0;}else{Median_0=(nums1Size+nums2Size)/2;Median_1=Median_0+1;}Median_0--;Median_1--;while(p_0<nums1Size || p_1<nums2Size){if(p_0<nums1Size && p_1<nums2Size){if(nums1[p_0]<=nums2[p_1]){p_0++;p++;if(Median_0==p){Temp0=nums1[p_0-1];}if(Median_1==p){Temp1=nums1[p_0-1];break;}}else{p_1++;p++;if(Median_0==p){Temp0=nums2[p_1-1];}if(Median_1==p){Temp1=nums2[p_1-1];break;}}}else{if(p_0<nums1Size && p_1>=nums2Size){p_0++;p++;if(Median_0==p){Temp0=nums1[p_0-1];}if(Median_1==p){Temp1=nums1[p_0-1];break;}}else{p_1++;p++;if(Median_0==p){Temp0=nums2[p_1-1];}if(Median_1==p){Temp1=nums2[p_1-1];break;}}}}return (Temp0+Temp1)/2;
}

Leetcode题库 4.寻找两个正序数组的中位数(双指针法 C实现)相关推荐

  1. Leetcode每日必刷题库第4题,如何寻找两个正序数组的中位数?

    题目: 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2. 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums ...

  2. 【LeetCode笔记】4. 寻找两个正序数组的中位数(Java、二分、递归)

    文章目录 题目描述 思路 & 代码 题目描述 算是拖了好久的题目= =,一开始刷的时候没打算直接冲困难 不过面试常客了,还是得冲掉,而且不能留下心魔嘛! 难点在于实现时间复杂度 O(log(m ...

  3. Leecode刷题热题HOT100(4)——寻找两个正序数组的中位数

  4. 【LeetCode】4.寻找两个正序数组的中位数

    4.寻找两个正序数组的中位数 一.问题描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 二.问题简化 所谓中位数,就 ...

  5. 【LeetCode】【HOT】4. 寻找两个正序数组的中位数(二分查找)

    [LeetCode][HOT]4. 寻找两个正序数组的中位数 文章目录 [LeetCode][HOT]4. 寻找两个正序数组的中位数 package hot;public class Solution ...

  6. [二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数

    [二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数 1.题目 题目链接 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组 ...

  7. LeetCode 4 寻找两个正序数组的中位数

    https://leetcode-cn.com/problems/median-of-two-sorted-arra 解决方案 Go 版本 func findMedianSortedArrays(nu ...

  8. 2022-6-13 全O(1)的数据结构,两数相加,无重复字符的最长子串,寻找两个正序数组的中位数,盛最多水的容器,......

    1. 全 O(1) 的数据结构 Design a data structure to store the strings' count with the ability to return the s ...

  9. 寻找两个正序数组的中位数

    寻找两个正序数组的中位数 时隔许久,我又回来了. 题目:给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2.请你找出并返回这两个正序数组的中位数. 要求算法的时间复杂度为O(log( ...

最新文章

  1. 一些关于Hibernate延迟加载的误区
  2. Sniffer Pro 教程
  3. linux之openssl简单介绍
  4. 什么可以作为gcroot_面包果既能当水果又可以作为粮食,国内却无法普及,这是为什么?...
  5. 求二叉树中结点个数代码java_求二叉树中第K层结点的个数
  6. 七年级上册计算机教学反思,七年级信息技术上册教学反思范文.docx
  7. Redis 中两种持久化机制详解
  8. Oracle如何建立多库,基于Oracle多库查询方法(分享)
  9. 很实用的一个ext表格,具有很好的分页功能。
  10. warning: C4819的解决办法
  11. Unity 用ml-agents机器学习造个游戏AI吧(1)(Windows环境配置)
  12. python可以下载百度文库的文档_Python 文档
  13. PS案例教程:photoshop路径运算和路径组合操作
  14. Flask入门(三)~补充及虚拟环境
  15. 白杨SEO:流量红利消失,现在都在各渠道做推广,我们还有必要做官方网站吗?怎么做呢?
  16. C语言指针(二重指针)
  17. prach---发端
  18. 第一个javaweb程序--你干嘛~嗨嗨~哎呦
  19. 基于深度学习的医学图像分割学习笔记(九)UNet 3+
  20. 2021信创“大比武”正式启动!金山办公助力信创人才培养和生态成熟

热门文章

  1. HDU 2512 一卡通大冒险
  2. VC6++ output :error executing c:\windows\system32\cmd.exe.
  3. ISE调用Notepad++并且实现错误高亮定位的方法
  4. SwiftUI之如何创建常量绑定与自定义绑定
  5. HarmonyOS之AI能力·图像超分辨率
  6. 112. Path Sum 路径总和
  7. 2019第十届蓝桥杯C/C++ B组省赛 —— 第二题:年号字串
  8. PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
  9. 数组、字符串及字符串相关函数
  10. 【机器视觉】 HDevelop语言基础(三)-容器和保留字