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

温州企业模板建站百度seo排名优化

温州企业模板建站,百度seo排名优化,广州网站建设兼职,网站验收时项目建设总结报告LeetCode力扣双指针题目 主要提供了力扣热题第四题,使用js,复杂度O(log(mn)),寻找两个正序数组的中位数。 题目解析 题目要求在两个已排序数组 nums1 和 nums2 中找到它们的中位数。为了满足时间复杂度要求 O(log (mn)),可以采…

LeetCode力扣双指针题目

主要提供了力扣热题第四题,使用js,复杂度O(log(m+n)),寻找两个正序数组的中位数。

题目解析

题目要求在两个已排序数组 nums1nums2 中找到它们的中位数。为了满足时间复杂度要求 O(log (m+n)),可以采用双指针的方法合并这两个数组,然后计算中位数。

思路

首先,代码检查 nums1nums2 的长度,确保 nums1 总是较短的数组。如果 nums1 的长度大于 nums2,则通过递归调用 findMedianSortedArrays 函数,将它们的顺序反转,以确保 nums1 始终是较短的数组。

获取 nums1nums2 的长度,分别赋值给 x 和 y。

初始化两个指针 lowhigh,它们将用于执行二分查找。low 初始为0,high 初始为 x,即 nums1 的长度。

进入一个循环,循环条件是 low 小于等于 high

在每次循环迭代中,计算 partitionXpartitionY,这两个值将用于将数组分成左右两部分。partitionX 表示将 nums1 分成左右两部分的分界点,而 partitionY 表示将 nums2 分成左右两部分的分界点。这些分界点是通过位运算和数组长度计算得出的。

根据分界点,获取左右两部分的最大值和最小值。maxXminX 表示 nums1 中左右两部分的最大值和最小值,而 maxYminY 表示 nums2 中左右两部分的最大值和最小值。

接着,代码检查最大值和最小值是否满足中位数的条件,即 maxX <= minYmaxY <= minX。如果满足这些条件,说明找到了中位数的位置。

如果总元素个数是偶数((x + y) % 2 === 0),则中位数是左右两部分的最大值和最小值的平均数;如果总元素个数是奇数,中位数是最大值中的较大值。

如果没有找到中位数的位置,根据情况更新 lowhigh,以继续二分查找。

最终,如果循环结束后仍然没有找到中位数的位置,代码会抛出一个错误,表示输入的数组不是有序的。

代码

function findMedianSortedArrays(nums1, nums2) {if (nums1.length > nums2.length) {return findMedianSortedArrays(nums2, nums1);}const x = nums1.length;const y = nums2.length;let low = 0;let high = x;while (low <= high) {const partitionX = (low + high) >> 1;const partitionY = ((x + y + 1) >> 1) - partitionX;const maxX = (partitionX === 0) ? Number.NEGATIVE_INFINITY : nums1[partitionX - 1];const maxY = (partitionY === 0) ? Number.NEGATIVE_INFINITY : nums2[partitionY - 1];const minX = (partitionX === x) ? Number.POSITIVE_INFINITY : nums1[partitionX];const minY = (partitionY === y) ? Number.POSITIVE_INFINITY : nums2[partitionY];if (maxX <= minY && maxY <= minX) {if ((x + y) % 2 === 0) {return (Math.max(maxX, maxY) + Math.min(minX, minY)) / 2;} else {return Math.max(maxX, maxY);}} else if (maxX > minY) {high = partitionX - 1;} else {low = partitionX + 1;}}throw new Error("Input arrays are not sorted.");
}

代码解析

((x + y + 1) >> 1) - partitionX这段代码是什么意思

((x + y + 1) >> 1) - partitionX 这段代码用于计算 partitionY,即将第二个数组 nums2 分成左右两部分的分界点。让我解释一下这个表达式的含义:

  • x 是第一个数组 nums1 的长度。
  • y 是第二个数组 nums2 的长度。
  • partitionX 是将第一个数组 nums1 分成左右两部分的分界点。

现在来逐步解释这个表达式:

  1. x + y + 1:首先,将两个数组的长度相加,并加1。这是因为在计算中位数时,需要考虑总的元素个数是否为奇数还是偶数。

  2. >> 1:然后,对上述结果进行右移一位,相当于除以2。这是因为中位数是将数组分成两部分,左半部分和右半部分,因此需要将总长度分为两半。

  3. - partitionX:最后,从上述结果中减去 partitionXpartitionX 表示将第一个数组 nums1 分成左右两部分的分界点。减去 partitionX 的目的是确定第二个数组 nums2 分成左右两部分的分界点 partitionY

这个表达式的目的是计算如何将两个数组分成左右两部分,以满足中位数的条件。它考虑了两个数组的长度,以确保正确计算中位数的位置。在这种二分查找算法中,partitionXpartitionY 的计算是关键,因为它们指导着如何在两个数组中查找中位数的位置。

if (maxX <= minY && maxY <= minX) {这段代码是什么意思

  • maxX 表示第一个数组 nums1 中分界点 partitionX 左侧部分的最大值,或者在 partitionX 为0时为负无穷大。
  • minY 表示第二个数组 nums2 中分界点 partitionY 右侧部分的最小值,或者在 partitionYy 时为正无穷大。
  • maxY 表示第二个数组 nums2 中分界点 partitionY 左侧部分的最大值,或者在 partitionY 为0时为负无穷大。
  • minX 表示第一个数组 nums1 中分界点 partitionX 右侧部分的最小值,或者在 partitionXx 时为正无穷大。

这个条件 maxX <= minY && maxY <= minX 检查以下情况是否成立:

  1. maxX 小于等于 minY:即第一个数组左侧部分的最大值小于等于第二个数组右侧部分的最小值。

  2. maxY 小于等于 minX:即第二个数组左侧部分的最大值小于等于第一个数组右侧部分的最小值。

如果这两个条件都成立,意味着已找到中位数的位置,因为左侧部分的元素都小于或等于右侧部分的元素。这是中位数的定义。

在满足这些条件的情况下,根据总元素个数是奇数还是偶数,代码返回相应的中位数值。如果总元素个数是偶数,中位数是左右两部分的最大值和最小值的平均数;如果总元素个数是奇数,中位数是最大值中的较大值。

这个条件判断是整个算法中的核心,用于确定中位数的位置。如果条件不成立,代码将根据情况更新 lowhigh,以继续二分查找,直到找到中位数的位置

总结

希望本文会对你有所帮助,如果有任何疑问可以留言与我沟通。

http://www.dinnco.com/news/18279.html

相关文章:

  • 免费做app的网站有哪些营销手段有哪些方式
  • 招聘网站怎么做线下活动百度广告联盟收益
  • 网站式的公司记录怎么做网络科技公司
  • 网站如何引入流量怎么查询百度收录情况
  • 网站建设优化公司呼和浩特设计师培训班多少钱
  • 乌鲁木齐建设网络优化大师客服
  • 安吉做网站免费seo网站的工具
  • 三沙网站设计公司爱站关键词挖掘old
  • 做外贸 建网站要注意什么重庆网络推广公司
  • 商城网站制作报价债务优化是什么意思
  • 网站外部链接怎么做天津网站排名提升
  • 深圳地质建设网站软件开发公司联系方式
  • 日照网站建设seo免费seo快速排名工具
  • wordpress上传突然提示需要ftp麒麟seo
  • 开源 html5网站模板东莞seo整站优化火速
  • 网站设计武汉品牌营销策划方案案例
  • 做视频类网站需要哪些许可证北京百度推广投诉电话
  • 哪些网站可以做网店常用的seo工具的是有哪些
  • 真人性做爰直播网站品牌推广和营销推广
  • 安徽省高速公路建设指挥部网站网店运营的工作内容
  • 网站优化公司怎么选如何做好品牌宣传
  • 常用wap网站开发工具 手机网站制作软件辽宁网站建设
  • 网站制作还花钱seo对网络推广的作用是什么?
  • 山西省网站建设站长工具seo综合查询columbu cat
  • 做网站有效果吗手机如何制作网站
  • 女装小说WordPress天津seo外包
  • 怎么找做网站的谷歌seo优化推广
  • 做网站赌博的推广是不是犯罪的电商网站开发平台有哪些
  • 益阳哪里做网站优化关键词排名提升
  • 网站显示建设中国际军事新闻今日头条