Leetcode题库 4.寻找两个正序数组的中位数(双指针法 C实现)
文章目录
- 解析
- 思路
- 代码
解析
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实现)相关推荐
- Leetcode每日必刷题库第4题,如何寻找两个正序数组的中位数?
题目: 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2. 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums ...
- 【LeetCode笔记】4. 寻找两个正序数组的中位数(Java、二分、递归)
文章目录 题目描述 思路 & 代码 题目描述 算是拖了好久的题目= =,一开始刷的时候没打算直接冲困难 不过面试常客了,还是得冲掉,而且不能留下心魔嘛! 难点在于实现时间复杂度 O(log(m ...
- Leecode刷题热题HOT100(4)——寻找两个正序数组的中位数
- 【LeetCode】4.寻找两个正序数组的中位数
4.寻找两个正序数组的中位数 一.问题描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 二.问题简化 所谓中位数,就 ...
- 【LeetCode】【HOT】4. 寻找两个正序数组的中位数(二分查找)
[LeetCode][HOT]4. 寻找两个正序数组的中位数 文章目录 [LeetCode][HOT]4. 寻找两个正序数组的中位数 package hot;public class Solution ...
- [二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数
[二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数 1.题目 题目链接 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组 ...
- LeetCode 4 寻找两个正序数组的中位数
https://leetcode-cn.com/problems/median-of-two-sorted-arra 解决方案 Go 版本 func findMedianSortedArrays(nu ...
- 2022-6-13 全O(1)的数据结构,两数相加,无重复字符的最长子串,寻找两个正序数组的中位数,盛最多水的容器,......
1. 全 O(1) 的数据结构 Design a data structure to store the strings' count with the ability to return the s ...
- 寻找两个正序数组的中位数
寻找两个正序数组的中位数 时隔许久,我又回来了. 题目:给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2.请你找出并返回这两个正序数组的中位数. 要求算法的时间复杂度为O(log( ...
最新文章
- 一些关于Hibernate延迟加载的误区
- Sniffer Pro 教程
- linux之openssl简单介绍
- 什么可以作为gcroot_面包果既能当水果又可以作为粮食,国内却无法普及,这是为什么?...
- 求二叉树中结点个数代码java_求二叉树中第K层结点的个数
- 七年级上册计算机教学反思,七年级信息技术上册教学反思范文.docx
- Redis 中两种持久化机制详解
- Oracle如何建立多库,基于Oracle多库查询方法(分享)
- 很实用的一个ext表格,具有很好的分页功能。
- warning: C4819的解决办法
- Unity 用ml-agents机器学习造个游戏AI吧(1)(Windows环境配置)
- python可以下载百度文库的文档_Python 文档
- PS案例教程:photoshop路径运算和路径组合操作
- Flask入门(三)~补充及虚拟环境
- 白杨SEO:流量红利消失,现在都在各渠道做推广,我们还有必要做官方网站吗?怎么做呢?
- C语言指针(二重指针)
- prach---发端
- 第一个javaweb程序--你干嘛~嗨嗨~哎呦
- 基于深度学习的医学图像分割学习笔记(九)UNet 3+
- 2021信创“大比武”正式启动!金山办公助力信创人才培养和生态成熟
热门文章
- HDU 2512 一卡通大冒险
- VC6++ output :error executing c:\windows\system32\cmd.exe.
- ISE调用Notepad++并且实现错误高亮定位的方法
- SwiftUI之如何创建常量绑定与自定义绑定
- HarmonyOS之AI能力·图像超分辨率
- 112. Path Sum 路径总和
- 2019第十届蓝桥杯C/C++ B组省赛 —— 第二题:年号字串
- PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
- 数组、字符串及字符串相关函数
- 【机器视觉】 HDevelop语言基础(三)-容器和保留字