From 9f2ab52dd1201416e3b62f4d9d08e67c3637bbce Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 28 Mar 2024 18:07:52 +0800 Subject: [PATCH] feat: 0875.Koko-Eating-Bananas --- ...11\347\232\204\347\217\202\347\217\202.go" | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 "Leetcode_labuladong/875.\347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.go" diff --git "a/Leetcode_labuladong/875.\347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.go" "b/Leetcode_labuladong/875.\347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.go" new file mode 100644 index 00000000..92b1b92e --- /dev/null +++ "b/Leetcode_labuladong/875.\347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.go" @@ -0,0 +1,49 @@ +// 時間複雜度: +// 空間複雜度: +/* + * @lc app=leetcode.cn id=875 lang=golang + * + * [875] 爱吃香蕉的珂珂 + */ + +// @lc code=start +func minEatingSpeed(piles []int, h int) int { + // 找出最大的香蕉堆 + left, right := 1, maxPile(piles) + for left < right { + // mid 代表消耗香蕉的速度(k) + mid := int(uint(left+right) >> 1) + if executeTime(piles, mid) <= h { + right = mid + } else { + left = mid + 1 + } + } + return left +} + +// 假設消耗速度k, 算出要花多少時間 +func executeTime(piles []int, k int) int { + time := 0 + for _, pile := range piles { + time += pile / k + if pile%k > 0 { + time++ + } + // time += int(math.Ceil(float64(pile) / float64(k))) + } + return time +} + +func maxPile(piles []int) int { + result := 0 + for _, pile := range piles { + if result < pile { + result = pile + } + } + return result +} + +// @lc code=end +