Leetcode 875. 爱吃香蕉的珂珂
1. 问题描述


思路
二分查找
代码
func minEatingSpeed(piles []int, h int) int {
sum := 0
for i := 0; i < len(piles); i++ {
sum += piles[i]
}
left, right := 1, sum
for left <= right {
mid := left + (right - left) / 2
hour := countHours(piles, mid)
if hour == h { // 时间相等,吃慢点
right = mid - 1
} else if hour < h { // 时间太短,吃慢点
right = mid - 1
} else { // 时间太长,吃快点
left = mid + 1
}
}
return left
}
func countHours(piles []int, k int) int {
res := 0
for i := 0; i < len(piles); i++ {
var h int
if piles[i] % k == 0 {
h = piles[i] / k
} else {
h = piles[i] / k + 1
}
res += h
}
return res
}
这篇博客介绍了LeetCode第875题《爱吃香蕉的珂珂》的解题思路和代码实现。使用二分查找法来确定珂珂吃香蕉的最快速度,确保在限定时间内吃完所有香蕉。文章提供了详细的代码逻辑,包括计算所需小时数的辅助函数。
601

被折叠的 条评论
为什么被折叠?



