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

【Leetcode 每日一题】1552. 两球之间的磁力

问题背景

在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有 n n n个空的篮子,第 i i i 个篮子的位置在 p o s i t i o n [ i ] position[i] position[i] M o r t y Morty Morty 想把 m m m 个球放到这些篮子里,使得任意两球间 最小磁力 最大。
已知两个球如果分别位于 x x x y y y,那么它们之间的磁力为 ∣ x − y ∣ |x - y| xy
给你一个整数数组 p o s i t i o n position position 和一个整数 m m m,请你返回最大化的最小磁力。

数据约束

  • n = p o s i t i o n . l e n g t h n = position.length n=position.length
  • 2 ≤ n ≤ 1 0 5 2 \le n \le 10 ^ 5 2n105
  • 1 ≤ p o s i t i o n [ i ] ≤ 1 0 9 1 \le position[i] \le 10 ^ 9 1position[i]109
  • 所有 p o s i t i o n position position 中的整数 互不相同
  • 2 ≤ m ≤ p o s i t i o n . l e n g t h 2 \le m \le position.length 2mposition.length

解题过程

最小化最大值,考虑二分答案法。
和 扩展题 几乎完全一致,直接修改代码都能通过。

具体实现

class Solution {
    public int maxDistance(int[] position, int m) {
        Arrays.sort(position);
        int left = 1;
        int right = (position[position.length - 1] - position[0]) / (m - 1) + 1;
        while (left < right) {
            int mid = left + ((right - left) >>> 1);
            if (check(position, mid) >= m) {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        return left - 1;
    }

    private int check(int[] position, int power) {
        int res = 1;
        int pre = position[0];
        for (int item : position) {
            if (item >= pre + power) {
                res++;
                pre = item;
            }
        }
        return res;
    }
}

http://www.kler.cn/a/548549.html

相关文章:

  • 1-2 gitee创建远程仓库
  • Docker与容器交互——attach和exec
  • 【DeepSeek】解决 DeepSeek 服务器不响应指南
  • Pytest快速入门
  • 软考网络工程师笔记
  • LeetCodehot 力扣热题100 二叉树的右视图
  • 如何正确安装Stable Diffusion Web UI以及对应的xFormers
  • mysql的rpm包安装
  • 【C++指南】不允许你不了解C++命名空间
  • Spring Boot 定时任务:轻松实现任务自动化
  • SQL-leetcode—1581. 进店却未进行过交易的顾客
  • EtherNetIP转ModbusTCP网关,给风电注入“超级赛亚人”能量
  • SQL数据清理:去除字段值中的多余符号(Demo例子)
  • 【NLP 24、模型训练方式】
  • 负载均衡集群——LVS-DR配置
  • PowerBI 矩阵 列标题分组显示(两行列标题)
  • Golang 的字符编码与 regexp
  • 《Grafana进阶教程-使用百度地图》
  • 数据库设计流程范式
  • js 使用缓存判断在规定时间内显示一次弹框