【LeetCode】2187. 完成旅途的最少时间

1. 题意

2. 分析

二分法有一个关键特征:如果答案answer满足题意,那么对于任何整数i,如果有i>=answer,那么i也会是一个存在的解,只不过不是最优解。

本题想要找出一个达到 totalTrips 趟需要的最少时间成本t,那么对于题目来说任何大于t的数也会是解,但不是最优解;任何小于t的数都不是解。这样整个值域就被分成了两部分,区间[0,t)[t, +∞),如下图所示:

那么使用二分法不断的折中找出这个边界值即可。

3. 代码

python 复制代码
class Solution:
    def minimumTime(self, time: List[int], totalTrips: int) -> int:
        left = 1
        max_time = time[0]
        for cur_time in time:
            max_time = max(max_time, cur_time)
        
        # 如果由这辆最慢的车完成totalTrips 需要的时间
        right = max_time * totalTrips
        while(left <= right):
            mid = (left+right)//2
            if self.check(mid, totalTrips, time):
                right = mid-1
            else:
                left = mid+1
        return left
            
    # time_cost 需要花费的最少时间
    # times 时间数组
    def check(self, time_cost, totalTrips, times):
        cnt = 0
        for time in times:
            cnt += (time_cost//time) # 当前这个time可以完成几趟
        return cnt >= totalTrips
相关推荐
noipp2 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
程序员二叉3 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木3 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕4 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
北域码匠5 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
手写码匠5 小时前
手写 GraphRAG:从零实现图增强检索增强生成系统
人工智能·深度学习·算法·aigc
BomanGe16 小时前
NSK重载高刚性滚珠丝杠技术详解
经验分享·算法·规格说明书
Matrix_116 小时前
手机里的计算摄影:广角形变校正算法
人工智能·算法·智能手机·计算摄影
WBluuue6 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist
x138702859578 小时前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio