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

Leetcode 3281. Maximize Score of Numbers in Ranges

  • Leetcode 3281. Maximize Score of Numbers in Ranges
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3281. Maximize Score of Numbers in Ranges

1. 解题思路

这一题多少有点惭愧,没有一下子搞定,是看了一下大佬们的思路才恍然大悟的。

这道题核心其实就是个二分法,显然,对于任意的值 k k k,如果其是可能的,那么的必然可以给出一个构造,使得任意两个点之间的距离均不小于 k k k。(注意,这里并不保证score一定可以取到 k k k,只是保证可以存在一个构造,使得其对应的score小于等于 k k k)。

此时,我们即可通过二分法获取 k k k的上界,且这个上界必然是可以取到的。

2. 代码实现

给出python代码实现如下:

class Solution:
    def maxPossibleScore(self, start: List[int], d: int) -> int:
        start = sorted(start)
        n = len(start)
        if n == 2:
            return start[1] - start[0] + d
        
        def is_possible(score):
            left = start[0]
            for x in start[1:]:
                if x + d - left < score:
                    return False
                left = max(x, left+score)
            return True
        
        i, j = 0, start[-1]-start[0]+d
        while j-i > 1:
            m = (i+j) // 2
            if is_possible(m):
                i = m
            else:
                j = m
        return i

提交代码评测得到:耗时2281ms,占用内存31.5MB。


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

相关文章:

  • HTML5+CSS前端开发【保姆级教学】+新闻文章初体验
  • Unity 2022 Nav Mesh 自动寻路入门
  • 【弱监督视频异常检测】2024-ESWA-基于扩散的弱监督视频异常检测常态预训练
  • 超全超详细使用SAM进行高效图像分割标注(GPU加速推理)
  • Android笔记(三十七):封装一个RecyclerView Item曝光工具——用于埋点上报
  • SwanLab安装教程
  • 双端队列--java--黑马
  • Python 学习笔记(二)
  • Java后端开发(十六)-- JavaBean对象拷贝工具类:运用反射机制,实现对象的深拷贝
  • 指针与二维数组
  • 软考中级软件设计师-【计算机系统】必考题汇总
  • 【Java】解决项目启动时端口被占用
  • 【Linux取经之路】用户权限管理
  • 博客常见问题
  • WordPress上可以内容替换的插件
  • FreeRTOS学习笔记(八)事件
  • 个人学习笔记7-3:动手学深度学习pytorch版-李沐
  • 深圳建站公司-如何做网站
  • Navicat BI 中创建自定义字段:计算字段
  • 【隐私计算】Paillier半同态加密算法
  • 【Colab代码调试】End-to-end reproducible AI pipelines in radiology using the cloud
  • 【时时三省】c语言例题----华为机试题<统计字符>
  • JVM面试(六)垃圾收集器
  • Linux下的Makefile与进度条程序
  • STM32重定义printf,实现串口打印
  • 鸿蒙轻内核A核源码分析系列五 虚实映射(5)虚实映射解除