码迷,mamicode.com
首页 > 其他好文 > 详细

875爱吃香蕉的珂珂

时间:2020-02-29 00:49:00      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:tps   http   ret   题目   eating   problem   lse   技术   img   

题目:珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。  珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。
返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。
链接:https://leetcode-cn.com/problems/koko-eating-bananas

法一:自己的代码

思路:对速度进行分割,与其它二分的区别是这里的是个函数,把速度传入返回时间进行比较,

技术图片
from typing import List
import math
class Solution:
    def minEatingSpeed(self, piles: List[int], H: int) -> int:
        s = sum(piles)
        # 最小速度是left,最大速度是right
        left = s // H
        if left == 0:
            return 1
        right = max(piles)
        # 计算速度x时,所用的时间
        def judge(x):
            # h是时间
            h = 0
            for i in piles:
                # 这里向上取整
                h += math.ceil(i / x)
            return h
        while left <= right:
            mid = (left + right) >> 1
            # 如果时间短,说明速度大,缩小右边界
            if judge(mid) <= H:
                right = mid - 1
            # 否则速度小,增大左边界
            else:
                left = mid + 1
        return left
if __name__ == __main__:
    solution = Solution()
    # result = solution.minEatingSpeed(piles = [3,6,7,11], H = 8)
    # result = solution.minEatingSpeed(piles = [8,8,8,8], H = 8)
    result = solution.minEatingSpeed(piles = [4], H = 8)
    print(result)
View Code

体会代码与69题,只是left和right的位置互换了,和返回的边界不同

ttt

 

875爱吃香蕉的珂珂

标签:tps   http   ret   题目   eating   problem   lse   技术   img   

原文地址:https://www.cnblogs.com/xxswkl/p/12381077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!