LeetCode 雞蛋掉落

描述

你將獲得 K 個雞蛋,並可以使用一棟從 1 到 N 共有 N 層樓的建築。

每個蛋的功能都是一樣的,如果一個蛋碎了,你就不能再把它掉下去。

你知道存在樓層 F ,滿足 0 <= F <= N 任何從高於 F 的樓層落下的雞蛋都會碎,從 F 樓層或比它低的樓層落下的雞蛋都不會破。

每次移動,你可以取一個雞蛋(如果你有完整的雞蛋)並把它從任一樓層 X 扔下(滿足 1 <= X <= N)。

你的目標是確切地知道 F 的值是多少。

無論 F 的初始值如何,你確定 F 的值的最小移動次數是多少?

示例1

輸入:K = 1, N = 2輸出:2解釋:雞蛋從 1 樓掉落。如果它碎了,我們肯定知道 F = 0 。否則,雞蛋從 2 樓掉落。如果它碎了,我們肯定知道 F = 1 。如果它沒碎,那麼我們肯定知道 F = 2 。因此,在最壞的情況下我們需要移動 2 次以確定 F 是多少。

示例2​​​​​​​

輸入:K = 2, N = 6輸出:3

示例3​​​​​​​

輸入:K = 3, N = 14輸出:4

提示:

1.1 <= K <= 1002.1 <= N <= 10000

代碼​​​​​​​

/** * @param {number} K * @param {number} N * @return {number} */var superEggDrop = function (K, N) {  let dp = Array(K + 1).fill(0)  let cnt = 0  while (dp[K] < N) {    cnt++    for (let i = K; i > 0; i--) {      dp[i] = dp[i - 1] + dp[i] + 1    }  }  return cnt};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章