mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-16 23:16:26 +00:00
feat(problems): add solutions for Search in Rotated Sorted Array and Koko Eating Bananas
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* 875. Koko Eating Bananas
|
||||
* Difficulty: Medium
|
||||
* https://leetcode.com/problems/koko-eating-bananas/
|
||||
*
|
||||
* ──────────────────────────────────────────────────
|
||||
*
|
||||
* Koko loves to eat bananas. There are n piles of bananas, the i^th
|
||||
* pile has piles[i] bananas. The guards have gone and will come back in
|
||||
* h hours.
|
||||
*
|
||||
* Koko can decide her bananas-per-hour eating speed of k. Each hour,
|
||||
* she chooses some pile of bananas and eats k bananas from that pile. If
|
||||
* the pile has less than k bananas, she eats all of them instead and
|
||||
* will not eat any more bananas during this hour.
|
||||
*
|
||||
* Koko likes to eat slowly but still wants to finish eating all the
|
||||
* bananas before the guards return.
|
||||
*
|
||||
* Return the minimum integer k such that she can eat all the bananas
|
||||
* within h hours.
|
||||
*
|
||||
*
|
||||
*
|
||||
* Example 1:
|
||||
*
|
||||
* Input: piles = [3,6,7,11], h = 8
|
||||
* Output: 4
|
||||
*
|
||||
* Example 2:
|
||||
*
|
||||
* Input: piles = [30,11,23,4,20], h = 5
|
||||
* Output: 30
|
||||
*
|
||||
* Example 3:
|
||||
*
|
||||
* Input: piles = [30,11,23,4,20], h = 6
|
||||
* Output: 23
|
||||
*
|
||||
*
|
||||
*
|
||||
* Constraints:
|
||||
*
|
||||
* • 1 <= piles.length <= 10^4
|
||||
*
|
||||
* • piles.length <= h <= 10^9
|
||||
*
|
||||
* • 1 <= piles[i] <= 10^9
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {number[]} piles
|
||||
* @param {number} h
|
||||
* @return {number}
|
||||
*/
|
||||
var minEatingSpeed = function(piles, h) {
|
||||
// Function to determine if K works for the H
|
||||
function kWorks(k){
|
||||
let hours = 0;
|
||||
for (let p of piles){
|
||||
hours += Math.ceil(p/k)
|
||||
}
|
||||
return hours <= h;
|
||||
}
|
||||
|
||||
// Setup Binary Search
|
||||
let l = 1;
|
||||
let r = Math.max(...piles);
|
||||
|
||||
// Find the K value which works for H and consumes all bananas
|
||||
while (l < r){
|
||||
const mid = Math.floor((l + r) / 2);
|
||||
if (kWorks(mid)){
|
||||
r = mid;
|
||||
}else{
|
||||
l = mid + 1;
|
||||
}
|
||||
}
|
||||
return l;
|
||||
};
|
||||
Reference in New Issue
Block a user