力扣2187.完成旅途的最少时间

力扣2187.完成旅途的最少时间

朴素做法

  • 二分答案

cpp 复制代码
  class Solution {
      long long check(vector<int> time,long long k)
      {
          long long res=0;
          for(auto t:time)
              res += (long long)k/t;
          return res;
      }
  public:
      long long minimumTime(vector<int>& time, int totalTrips) {
          int n = time.size();
          sort(time.begin(),time.end());
          long long l=time[0]  - 1,r=(long long)totalTrips*time[0];
          while(l<r)
          {
              long long mid = l + r >> 1;
              if(check(time,mid) < (long long)totalTrips) l = mid + 1;
              else r = mid;
          }
          return l;
      }
  };

优化

  • 内联函数

  • 库函数min

cpp 复制代码
  class Solution {
  public:
      long long minimumTime(vector<int>& time, int totalTrips) {
          //内联函数 比外部函数快一倍
          auto check = [&](long long x) -> bool
          {
              long long res=0;
              for(int t : time)
              {
                  res += x/t;
                  if(res >= totalTrips) return true;
              }
              return false;
          };
          //求最小值
          int min_t = ranges::min(time);
          long long l=min_t,r=(long long)totalTrips*min_t;
          while(l<r)
          {
              long long mid = l + r >> 1;
              //说明当前mid时res >= total
              if(check(mid)) r = mid;
              else l = mid + 1;
          }
          return r;
      }
  };
相关推荐
RainbowSea7 分钟前
跨域问题(Allow CORS)解决(3 种方法)
java·spring boot·后端
掘金-我是哪吒8 分钟前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
java·分布式·微服务·云原生·架构
RainbowSea11 分钟前
问题 1:MyBatis-plus-3.5.9 的分页功能修复
java·spring boot·mybatis
前端 贾公子14 分钟前
monorepo + Turborepo --- 开发应用程序
java·前端·javascript
三维重建-光栅投影26 分钟前
VS中将cuda项目编译为DLL并调用
算法
不学会Ⅳ1 小时前
Mac M芯片搭建jdk源码环境(jdk24)
java·开发语言·macos
虫小宝1 小时前
高佣金返利平台监控体系建设:APM、链路追踪与佣金异常预警系统技术实现
java
sniper_fandc2 小时前
SpringBoot系列—入门
java·spring boot·后端
课堂剪切板3 小时前
ch03 部分题目思路
算法
代码的余温3 小时前
Maven引入第三方JAR包实战指南
java·maven·jar