当前位置: 首页 > news >正文

芜湖网站建设芜湖狼道小视频网站哪个可以推广

芜湖网站建设芜湖狼道,小视频网站哪个可以推广,wordpress 摄影,做企业网站备案都需要什么1. 题目 见 寻找两个正序数组的中位数 2. 解题思路 首先一看到题目说是正序数组,且时间复杂度要求在对数级别,所以自然想到了双指针中的二分法。 首先来看一下,假设输入是这两个数组,那么将其逻辑合并成一个大数组的话&#x…

1. 题目

见 寻找两个正序数组的中位数

2. 解题思路

首先一看到题目说是正序数组,且时间复杂度要求在对数级别,所以自然想到了双指针中的二分法。
在这里插入图片描述
首先来看一下,假设输入是这两个数组,那么将其逻辑合并成一个大数组的话,分界线左边为大数组的左边,右边同理。这个数组又是升序的,且原来的两个数组是升序的(即L1<=R1& L2<=R2)。所以在大数组中,L1<=R2 & L2<=R1
所以这里就得到了第一个约束:切割后的中位线要满足交叉小于等于。
然后大数组的中位数呢,就是从中位数左边选择一个大的数字(Max(L1,L2))和右边选一个小的数字(Min(R1,R2))来进行计算。

上面的情况是刚好属于一个逻辑合并数组并且划分中位线后 满足交叉小于的情况,假如像下图划分中位线后不满足交叉小于呢?
在这里插入图片描述
因为L2>R1了,所以我们右移R1,直到比L2大,满足交叉小于等于。
在这里插入图片描述
这个时候会奇怪了,为什么要移动nums2的中位线?
因为此时我们做了一个逻辑合并数组的设想,所以整个大数组中位线两边的元素应该尽量保持相同。
R1移动后nums1中位线左边有5个元素,所以同理移动nums2的中位线,让它的右边也有5个元素。

另外需要注意的是:
1、我们默认只对nums1进行操作,由nums1的操作计算出对nums2的操作。比如 假如不符合交叉小于等于,那么我们就移动nums1的中位线,然后由公式算出nums2的中位线即可。
2、当数组为奇数的时候我们默认把中位线划分在右边一点(左边也是可以的)
在这里插入图片描述

上面说的是两个数组都是偶数的情况,假如有个数字为奇数呢?
在这里插入图片描述
因为数组是有序的,且满足交叉小于等于,且奇数数组的中位数都是划分在右边的(我们约定的),单拎出来nums2看的话,中位数是中位线左边的那个。所以最后逻辑合并大数组了,中位数只要在大数组中位线左边取偏大的就行了。也就是max(L1,L2)

3. 代码

class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {//保持数组长度小的在前面,节省性能if (nums1.length > nums2.length) {return findMedianSortedArrays(nums2, nums1);}int m = nums1.length;int n = nums2.length;int left = 0, right = m;int median1 = 0, median2 = 0;while (left <= right) {//确定第一个数组的分割线median1 = (left + right) / 2;//确定第二个数组的分割线median2 = (m + n + 1) / 2 - median1;//数组1中位分割线左边的数int L1= (median1 == 0 ? Integer.MIN_VALUE : nums1[median1 - 1]);//数组1中位分割线右边的数int R1= (median1 == m ? Integer.MAX_VALUE : nums1[median1]);//数组2中位分割线左边的数int L2= (median2 == 0 ? Integer.MIN_VALUE : nums2[median2 - 1]);//数组2中位分割线右边的数int R2= (median2 == n ? Integer.MAX_VALUE : nums2[median2]);int nums_j = (median2 == n ? Integer.MAX_VALUE : nums2[median2]);if (L1 > R2) {//不符合交叉小于等于 继续二分(左移中位线)right = median1-1;} else if (L2 > R1) {//不符合交叉小于等于 继续二分(右移中位线)left = median1 + 1;} else {//将所有的数合并后,如果是偶数个数,中位数是中间两个数的平均值,如果是奇数个数,中位数是大的数return (m + n) % 2 == 0 ? (Math.max(L1, L2) + Math.min(R1, R2)) / 2.0 :  Math.max(L1, L2);}}return 0.0;}}
http://www.hkea.cn/news/48538/

相关文章:

  • 怀仁有做网站的公司吗磁力搜索引擎2023
  • 建站行业都扁平化设计合肥网站推广公司哪家好
  • 做企业网站织梦和wordpress哪个好百度指数查询工具app
  • 郑州网站服务公司优化神马排名软件
  • 茶叶网站建设的优势南宁seo外包平台
  • 高古楼网站 做窗子北京seo技术交流
  • 南阳建设网站制作网络最有效的推广方法
  • 纯静态网站seoseo排名优化北京
  • 开封网站建设哪家好指数计算器
  • 网站开发 架构石家庄seo关键词排名
  • 可以免费做商业网站的cms百度seo霸屏软件
  • 哪家网站建设专业快速建站教程
  • 坪山网站建设行业现状优化seo方案
  • 做网站需要架构师吗网站平台有哪些
  • 网站建设丿选择金手指15凡科建站官网
  • 可以做外国网站文章武汉企业seo推广
  • 天津网站建设公司最好太原做网站哪家好
  • 网站代下单怎么做百度指数数据分析平台入口
  • 淘宝做动效代码的网站seo的优化方向
  • 番禺建网站公司网站搜索工具
  • 安徽万振建设集团网站长春网站推广公司
  • 网站怎么制作 推广seo超级外链工具免费
  • 中小学网站建设探讨东莞seo整站优化火速
  • php是网站开发的语言吗企业网站的作用
  • 网站站外优化怎么做企业推广app
  • 拉趣网站是谁做的威海网站制作
  • 做宣传海报的网站百度导航2023年最新版
  • 湖南做网站 磐石网络windows优化大师官方免费
  • 制作网站的最新软件如何优化关键词的方法
  • 东莞工作招聘网最新招聘搜索 引擎优化