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

网站建设工作人员有哪些职责企业是指什么

网站建设工作人员有哪些职责,企业是指什么,搜狐自助建站哪个平台好用,做门户型网站要多少钱题目: 在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子,第 i 个篮子的位置在 position[i] ,Morty 想把 m 个球放到这些篮子里&#xff0c…

题目:

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

已知两个球如果分别位于 x 和 y ,那么它们之间的磁力为 |x - y| 。

给你一个整数数组 position 和一个整数 m ,请你返回最大化的最小磁力。

示例 1:

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

示例 2:

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

提示:

  • n == position.length
  • 2 <= n <= 10^5
  • 1 <= position[i] <= 10^9
  • 所有 position 中的整数 互不相同 。
  • 2 <= m <= position.length

解法:二分查找

解决思路

  1. 排序

    • 首先对 position 数组进行排序。排序后,我们可以更方便地计算任意两个篮子之间的距离。

    • 例如,position = [1, 2, 3, 4, 7],排序后仍然是 [1, 2, 3, 4, 7]

  2. 二分查找

    • 我们需要找到最大的最小磁力。最小磁力的范围是从 0 到 maxDistance,其中 maxDistance 是排序后数组中最后一个位置与第一个位置的差。

    • 例如,position = [1, 2, 3, 4, 7]maxDistance = 7 - 1 = 6

    • 使用二分查找在 [0, maxDistance] 范围内搜索最大的最小磁力。

  3. 贪心选择

    • 对于二分查找的每一个中间值 mid,我们需要检查是否可以放置 m 个球,使得任意两个球之间的磁力至少为 mid

    • 如果可以,说明 mid 是一个可能的最小磁力,我们尝试更大的值。

    • 如果不可以,说明 mid 太大,我们需要尝试更小的值。

  4. 检查函数

    • 实现一个辅助函数 canPlace,用于检查是否可以放置 m 个球,使得任意两个球之间的磁力至少为 mid

    • 通过遍历排序后的数组,贪心地放置球,确保每次放置的球与上一个放置的球的距离至少为 mid


代码实现

class Solution {
public:int maxDistance(vector<int>& position, int m) {// 1. 排序sort(position.begin(), position.end());// 2. 二分查找的范围int left = 0, right = position.back() - position[0];// 3. 二分查找while (left < right) {int mid = (left + right + 1) / 2; // 中间值if (canPlace(position, m, mid)) {left = mid; // 可以满足条件,尝试更大的值} else {right = mid - 1; // 不能满足条件,尝试更小的值}}// 4. 返回结果return left;}private:// 检查是否可以放置 m 个球,使得任意两个球之间的磁力至少为 minDistancebool canPlace(const vector<int>& position, int m, int minDistance) {int count = 1; // 已放置的球的数量int last = position[0]; // 上一个放置的球的位置for (int i = 1; i < position.size(); ++i) {if (position[i] - last >= minDistance) {last = position[i]; // 放置当前球count++; // 已放置的球的数量加 1if (count >= m) {return true; // 已经放置了 m 个球}}}return false; // 无法放置 m 个球}
};

举例说明

示例 1:
  • 输入:position = [1, 2, 3, 4, 7]m = 3

  • 排序后:position = [1, 2, 3, 4, 7]

  • 步骤:

    1. 二分查找范围:left = 0right = 7 - 1 = 6

    2. 第一次循环:

      • mid = (0 + 6 + 1) / 2 = 3

      • 检查是否可以放置 3 个球,磁力至少为 3:

        • 放置 1,然后放置 4(因为 4 - 1 = 3 >= 3),然后放置 7(因为 7 - 4 = 3 >= 3)。

        • 可以满足条件,更新 left = 3

    3. 第二次循环:

      • mid = (3 + 6 + 1) / 2 = 5

      • 检查是否可以放置 3 个球,磁力至少为 5:

        • 放置 1,然后无法放置其他球(因为 2 - 1 = 1 < 53 - 1 = 2 < 54 - 1 = 3 < 57 - 1 = 6 >= 5)。

        • 无法满足条件,更新 right = 4

    4. 第三次循环:

      • mid = (3 + 4 + 1) / 2 = 4

      • 检查是否可以放置 3 个球,磁力至少为 4:

        • 放置 1,然后放置 7(因为 7 - 1 = 6 >= 4),但无法放置第三个球。

        • 无法满足条件,更新 right = 3

    5. 循环结束,返回 left = 3

  • 输出:3

示例 2:
  • 输入:position = [5, 4, 3, 2, 1, 1000000000]m = 2

  • 排序后:position = [1, 2, 3, 4, 5, 1000000000]

  • 步骤:

    1. 二分查找范围:left = 0right = 1000000000 - 1 = 999999999

    2. 通过二分查找和贪心选择,最终找到最大最小磁力为 999999999

  • 输出:999999999


复杂度分析

  1. 时间复杂度

    • 排序:O(n log n),其中 n 是数组长度。

    • 二分查找:O(log(maxDistance)),其中 maxDistance 是最大位置差。

    • 检查函数:O(n),每次二分查找都需要调用一次检查函数。

    • 总时间复杂度:O(n log n + n log(maxDistance))

  2. 空间复杂度

    • 排序需要 O(log n) 的栈空间(快速排序的递归栈)。

    • 其他操作使用常数空间。

    • 总空间复杂度:O(log n)

http://www.dtcms.com/wzjs/570169.html

相关文章:

  • 电商网站开发文献汇总龙岗商城网站建设
  • wordpress站内查找wordpress 数学主题
  • 做网站一般多少站内免费推广的方式有哪些
  • 网站建设ftp软件怎么开一个微信公众号
  • 在线视频网站a一级爰a做免费阿里企业邮箱app
  • 什么网站做视频北京校园网站建设
  • 西部数码 网站管理谷歌搜索官网
  • 建立网站大概需要多少钱企业服务平台公众号
  • 大型网站开发经典框架平乡企业做网站
  • 建设工程合同管理网站如何对网站做渗透
  • 微信兼职平台网站开发专注网站开发
  • 微信建网站服务优秀作文网站都有哪些
  • 百度站长工具seo综合查询济南网站优化公司哪家好
  • ip网站怎么做房屋3d设计软件
  • 北京住房建设部官方网站千图网素材免费下载
  • 重庆邮电大学官网网站沈阳企业网站制作
  • 河南手机网站设计自己做电商网站.
  • 微网站和微信公共平台的区别秦皇岛市网站制作公司
  • 两学一做网站无法做题装修公司加盟店排行榜
  • 网站开发最新效果怎么知道网站的空间服务商
  • 企业运营管理系统东莞优化公司首选3火星
  • 成都设计网站的公司哪家好wordpress adroid
  • 做网站代理网站怎么谈桂平seo关键词优化
  • 销售新网站推广策略网站内页可以做关键词优化吗
  • 老网站如何做301重定向新网站wordpress多级菜单插件
  • 什么平台可以做网站推广加强网站内容保密建设
  • 服务器绑定网站打不开网站运营团队管理
  • 旅游网站管理系统论文wordpress设置手机浏览器
  • 公司要做网站去哪里代理公司注册代理公司注册汇发财税
  • 培训计划方案成都seo公司