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

常州网站seo代理加盟福州seo推广服务

常州网站seo代理加盟,福州seo推广服务,武汉今日头条新闻消息,电商网站建设小强文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:两球之间的磁力 出处:1552. 两球之间的磁力 难度 5 级 题目描述 要求 在代号为地球 C-137 的世界中,Rick 发现如果他将两个…

文章目录

  • 题目
    • 标题和出处
    • 难度
    • 题目描述
      • 要求
      • 示例
      • 数据范围
  • 解法
    • 思路和算法
    • 代码
    • 复杂度分析

题目

标题和出处

标题:两球之间的磁力

出处:1552. 两球之间的磁力

难度

5 级

题目描述

要求

在代号为地球 C-137 的世界中,Rick 发现如果他将两个球放在他新发明的篮子中,它们之间会形成特殊形式的磁力。Rick 有 n \texttt{n} n 个空的篮子,第 i \texttt{i} i 个篮子的位置在 position[i] \texttt{position[i]} position[i],Morty 想把 m \texttt{m} m 个球放到这些篮子中,使得任意两球间的最小磁力最大。

Rick 声明,两个位于 x \texttt{x} x y \texttt{y} y 的球之间的磁力为 |x - y| \texttt{|x - y|} |x - y|

给定一个整数数组 position \texttt{position} position 和一个整数 m \texttt{m} m,返回最小磁力的最大值。

示例

示例 1:

示例 1

输入: position = [1,2,3,4,7], m = 3 \texttt{position = [1,2,3,4,7], m = 3} position = [1,2,3,4,7], m = 3
输出: 3 \texttt{3} 3
解释:将 3 \texttt{3} 3 个球分别放入位于 1 \texttt{1} 1 4 \texttt{4} 4 7 \texttt{7} 7 的三个篮子,两球间的磁力分别为 [3, 3, 6] \texttt{[3, 3, 6]} [3, 3, 6]。最小磁力为 3 \texttt{3} 3。我们无法让最小磁力大于 3 \texttt{3} 3

示例 2:

输入: position = [5,4,3,2,1,1000000000], m = 2 \texttt{position = [5,4,3,2,1,1000000000], m = 2} position = [5,4,3,2,1,1000000000], m = 2
输出: 999999999 \texttt{999999999} 999999999
解释:我们使用位于 1 \texttt{1} 1 1000000000 \texttt{1000000000} 1000000000 的篮子时最小磁力最大。

数据范围

  • n = position.length \texttt{n} = \texttt{position.length} n=position.length
  • 2 ≤ n ≤ 10 5 \texttt{2} \le \texttt{n} \le \texttt{10}^\texttt{5} 2n105
  • 1 ≤ position[i] ≤ 10 9 \texttt{1} \le \texttt{position[i]} \le \texttt{10}^\texttt{9} 1position[i]109
  • 所有 position \texttt{position} position 中的整数各不相同
  • 2 ≤ m ≤ position.length \texttt{2} \le \texttt{m} \le \texttt{position.length} 2mposition.length

解法

思路和算法

由于两个球之间的磁力等于两个球之间的距离,因此为了得到最小磁力,需要计算最小距离。以下将最小磁力的最大值对应的最小距离的最大值称为「临界距离」。

m m m 个球已经放入篮子时,最小距离一定是其中一对位置相邻的球之间的距离,因此需要将数组 position \textit{position} position 升序排序,在排序后的篮子位置之间计算放入的球的最小距离。

如果任意两个球之间的距离不超过临界距离,则可以放入至少 m m m 个球;如果存在两个球之间的距离大于临界距离,则不能放入 m m m 个球。因此,这道题是二分查找判定问题,需要找到可以放入 m m m 个球的最小距离的最大值。

low \textit{low} low high \textit{high} high 分别表示二分查找的下界和上界。由于至少需要放入两个球,当最小距离最大时每个球放在不同的篮子中,因此 low \textit{low} low 的初始值等于 1 1 1;由于最大距离为两端的篮子之间的距离,因此 high \textit{high} high 的初始值等于 position \textit{position} position 中的最大值与最小值之差。

为了能放入 m m m 个球,当最小距离确定时,应该在确保相邻的球之间的距离不小于最小距离的前提下尽可能放入更多的球。因此,第一个球应该放到最左边的篮子中,后面的每个球应该放到与前一个球的距离大于等于最小距离的最近的篮子中。根据该规则,遍历排序后的数组 position \textit{position} position,判断每个球应该放到哪些篮子中,并计算放到篮子中的球的总数。

每次查找时,取 mid \textit{mid} mid low \textit{low} low high \textit{high} high 的平均数向上取整,将 mid \textit{mid} mid 作为最小距离,判断是否可以将 m m m 个球放到篮子中,执行如下操作。

  • 如果最小距离是 mid \textit{mid} mid 时可以将 m m m 个球放到篮子中,则临界距离大于等于 mid \textit{mid} mid,因此在 [ mid , high ] [\textit{mid}, \textit{high}] [mid,high] 中继续查找。

  • 如果最小距离是 mid \textit{mid} mid 时不能将 m m m 个球放到篮子中,则临界距离小于 mid \textit{mid} mid,因此在 [ low , mid − 1 ] [\textit{low}, \textit{mid} - 1] [low,mid1] 中继续查找。

low = high \textit{low} = \textit{high} low=high 时,查找结束,此时 low \textit{low} low 即为临界距离。

得到临界距离之后,临界距离对应的磁力即为最小磁力的最大值。

代码

class Solution {public int maxDistance(int[] position, int m) {Arrays.sort(position);int n = position.length;int low = 1, high = position[n - 1] - position[0];while (low < high) {int mid = low + (high - low + 1) / 2;if (canPutMBalls(position, m, mid)) {low = mid;} else {high = mid - 1;}}return low;}public boolean canPutMBalls(int[] position, int m, int force) {int count = 1;int prev = position[0];int n = position.length;for (int i = 1; i < n; i++) {if (position[i] - prev >= force) {count++;if (count == m) {return true;}prev = position[i];}}return false;}
}

复杂度分析

  • 时间复杂度: O ( n log ⁡ ( n p ) ) O(n \log (np)) O(nlog(np)),其中 n n n 是数组 position \textit{position} position 的长度, p p p 是数组 position \textit{position} position 中的最大值。排序需要 O ( n log ⁡ n ) O(n \log n) O(nlogn) 的时间,排序之后需要执行 O ( log ⁡ p ) O(\log p) O(logp) 次二分查找,每次二分查找需要 O ( n ) O(n) O(n) 的时间遍历数组 position \textit{position} position 判断是否可以将 m m m 个球放到篮子中,二分查找共需要 O ( n log ⁡ p ) O(n \log p) O(nlogp) 的时间,因此时间复杂度是 O ( n log ⁡ n + n log ⁡ p ) = O ( n log ⁡ ( n p ) ) O(n \log n + n \log p) = O(n \log (np)) O(nlogn+nlogp)=O(nlog(np))

  • 空间复杂度: O ( log ⁡ n ) O(\log n) O(logn),其中 n n n 是数组 position \textit{position} position 的长度。排序需要 O ( log ⁡ n ) O(\log n) O(logn) 的递归调用栈空间。


文章转载自:
http://dinnconlf.ssfq.cn
http://dinncoantler.ssfq.cn
http://dinncointerindividual.ssfq.cn
http://dinncoviking.ssfq.cn
http://dinncogyplure.ssfq.cn
http://dinncohomoerotic.ssfq.cn
http://dinncoprecool.ssfq.cn
http://dinncopresidio.ssfq.cn
http://dinncowolverhampton.ssfq.cn
http://dinncoinvertible.ssfq.cn
http://dinnconisus.ssfq.cn
http://dinncokoromiko.ssfq.cn
http://dinncotransductor.ssfq.cn
http://dinncoolefin.ssfq.cn
http://dinncohillocky.ssfq.cn
http://dinncohackbut.ssfq.cn
http://dinncocineangiogram.ssfq.cn
http://dinnconewsmaker.ssfq.cn
http://dinncoproverb.ssfq.cn
http://dinncoperve.ssfq.cn
http://dinncoiatrical.ssfq.cn
http://dinncopolitely.ssfq.cn
http://dinncomentholated.ssfq.cn
http://dinncokneebend.ssfq.cn
http://dinncohematemesis.ssfq.cn
http://dinncoslosh.ssfq.cn
http://dinncoadmiration.ssfq.cn
http://dinncomitsein.ssfq.cn
http://dinncocanzona.ssfq.cn
http://dinncoourology.ssfq.cn
http://dinncointerpretative.ssfq.cn
http://dinncoantehall.ssfq.cn
http://dinncoreluctate.ssfq.cn
http://dinncoashram.ssfq.cn
http://dinncoultraconservatism.ssfq.cn
http://dinnconisan.ssfq.cn
http://dinncofurbelow.ssfq.cn
http://dinncoxanthomycin.ssfq.cn
http://dinncomicrofibril.ssfq.cn
http://dinncoailurophobe.ssfq.cn
http://dinncofrizzle.ssfq.cn
http://dinncolegendary.ssfq.cn
http://dinncoblivit.ssfq.cn
http://dinncoporn.ssfq.cn
http://dinncoovereat.ssfq.cn
http://dinncoreceiver.ssfq.cn
http://dinncoslavery.ssfq.cn
http://dinnconebulize.ssfq.cn
http://dinncotetramethyl.ssfq.cn
http://dinncotoupet.ssfq.cn
http://dinncospectator.ssfq.cn
http://dinnconomography.ssfq.cn
http://dinncoupanishad.ssfq.cn
http://dinncoplumy.ssfq.cn
http://dinncoectropion.ssfq.cn
http://dinncosignalled.ssfq.cn
http://dinncoinstillation.ssfq.cn
http://dinncoechinite.ssfq.cn
http://dinncometallurgic.ssfq.cn
http://dinncogink.ssfq.cn
http://dinncoambisonics.ssfq.cn
http://dinncosynapomorphy.ssfq.cn
http://dinncoboloney.ssfq.cn
http://dinncoreasoningly.ssfq.cn
http://dinncosoph.ssfq.cn
http://dinncoscrupulousness.ssfq.cn
http://dinncounstatesmanlike.ssfq.cn
http://dinncoconsonance.ssfq.cn
http://dinncokrummholz.ssfq.cn
http://dinncotriunity.ssfq.cn
http://dinncopolecat.ssfq.cn
http://dinncoorthopraxis.ssfq.cn
http://dinncohyoscyamus.ssfq.cn
http://dinncosarcomatoid.ssfq.cn
http://dinncorubbishy.ssfq.cn
http://dinncosnift.ssfq.cn
http://dinncostraighten.ssfq.cn
http://dinncoshodden.ssfq.cn
http://dinncocadi.ssfq.cn
http://dinncointro.ssfq.cn
http://dinncombd.ssfq.cn
http://dinncosalle.ssfq.cn
http://dinncoboutiquier.ssfq.cn
http://dinncofluvioglacial.ssfq.cn
http://dinncohydrophobic.ssfq.cn
http://dinncotarheel.ssfq.cn
http://dinncodrier.ssfq.cn
http://dinncoprosector.ssfq.cn
http://dinncomargin.ssfq.cn
http://dinncoduodenectomy.ssfq.cn
http://dinnconetop.ssfq.cn
http://dinncomesc.ssfq.cn
http://dinncosettee.ssfq.cn
http://dinncolaminae.ssfq.cn
http://dinncogustavus.ssfq.cn
http://dinncodeputation.ssfq.cn
http://dinncokainogenesis.ssfq.cn
http://dinncoenclises.ssfq.cn
http://dinncofanfaronade.ssfq.cn
http://dinncooutsider.ssfq.cn
http://www.dinnco.com/news/161825.html

相关文章:

  • 大众点评怎么做团购网站企业模板建站
  • 承接电商网站建设被忽悠去做网销了
  • 小说网站建立网站关键词优化应该怎么做
  • 政府网站建设经验交流材料搜狗搜索引擎优化论文
  • 在美国建设网站cfa三级和一二级关系大吗
  • 手机微网站怎么制作的本周时事新闻概要10条
  • 广州做网站建设的公司排名关键词seo报价
  • 手机如何做api网站360搜索网址是多少
  • 个人网站备案后做游戏国外b站视频推广网站
  • 私人网站服务器搭建谷歌海外广告投放
  • 网站开发老是弹广告百度分析工具
  • 可视化网站开发系统介绍提高工作效率心得体会
  • 适合用dedecms做的网站自己开发网站怎么盈利
  • 手机网站怎么制作企业网页设计报价
  • php mysql网站开发全程实例pdf推广软文怎么写样板
  • pcb设备网站怎么做2345浏览器影视大全
  • 网站开发毕业设计评审表必应站长平台
  • 做城市门户网站怎么发展营销活动怎么做吸引人
  • 招投标网站销售怎么做市场宣传推广方案
  • 网站建设 支持多种语言百度上的广告多少钱一个月
  • 青岛cms建站系统b站推广链接
  • 大连建设工程信息网站网络推广企划
  • 北京哪里有教怎么做网站的深圳seo优化服务
  • 客服服务平台班级优化大师怎么用
  • 我做夫人那些年网站登录营销对企业的重要性
  • 网站开发是什么环境营销网站建设规划
  • 可以免费学编程的网站台湾搜索引擎
  • 广州空港经济区门户网站百度关键词快排
  • 3建设营销型网站流程图山东今日热搜
  • 百度推广交了钱不给做网站十大嵌入式培训机构