力扣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;
      }
  };
相关推荐
一 乐20 分钟前
电影院|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·电影院购票管理管理系统
恼书:-(空寄22 分钟前
JVM GC 日志分析 + 常见 GC 场景 + 实战参数调优
java·jvm
消失的旧时光-194329 分钟前
Spring Boot 实战(五):接口工程化升级(统一返回 + 异常处理 + 错误码体系 + 异常流转机制)
java·spring boot·后端·解耦
王老师青少年编程39 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【线性扫描贪心】:数列分段 Section I
c++·算法·编程·贪心·csp·信奥赛·线性扫描贪心
王老师青少年编程40 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【线性扫描贪心】:分糖果
c++·算法·贪心算法·csp·信奥赛·线性扫描贪心·分糖果
_日拱一卒42 分钟前
LeetCode:2两数相加
算法·leetcode·职场和发展
py有趣43 分钟前
力扣热门100题之零钱兑换
算法·leetcode
董董灿是个攻城狮1 小时前
Opus 4.7 来了,我并不建议你升级
算法
无敌昊哥战神2 小时前
【保姆级题解】力扣17. 电话号码的字母组合 (回溯算法经典入门) | Python/C/C++多语言详解
c语言·c++·python·算法·leetcode
脱氧核糖核酸__2 小时前
LeetCode热题100——238.除了自身以外数组的乘积(题目+题解+答案)
数据结构·c++·算法·leetcode