力扣第887题 鸡蛋掉落

力扣第887题 鸡蛋掉落

class Solution {
public:
    int superEggDrop(int K, int N)
    {
        vector<vector<int>> dp(K+1, vector<int>(N+1, 0));
        int m = 0;
        for (; dp[K][m] < N;) {
            m++;
            for (int k = 1; k <= K; k++)
                dp[k][m] = 1 + dp[k-1][m-1] + dp[k][m-1];
        }
        return m;
    }
};

原文地址:https://www.cnblogs.com/woodjay/p/12683047.html

时间: 2024-07-29 09:39:47

力扣第887题 鸡蛋掉落的相关文章

力扣第70题:爬楼梯

力扣第70题:爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶. 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶. 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 ? int climbStairs(int n) { if (n <= 1) { re

力扣第95题 不同的二叉搜索树II

力扣第95题 不同的二叉搜索树II 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; vector<TreeNode*> generateTree(int start, int end) { vector<TreeNode*> v

力扣第452题 用最少数量的箭引爆气球

力扣第452题 用最少数量的箭引爆气球 class Solution { public: int findMinArrowShots(vector<vector<int>>& points) { int len = points.size(); if (len == 0) { return 0; } sort(points.begin(), points.end(), [](const vector<int> &pl1, const vector<

力扣第136题 只出现一次的数

力扣第136题 只出现一次的数 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 class Solution { public: int singleNumber(vector<int>& nums) { int len = nums.size(); fo

力扣第260题 只出现一次的数字 III

力扣第260题 只出现一次的数字 III 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 : 输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案. 你的算法应该具有线性时间复杂度.你能否仅使用常数空间复杂度来实现? class Solution { public: vector<int> singleNumber(vector<int&

力扣第1013题 将数组分成和相等的三部分

力扣第1013题 将数组分成和相等的三部分 class Solution { public: bool canThreePartsEqualSum(vector<int>& A) { int sum = accumulate(A.begin(), A.end(), 0); if (sum % 3 != 0) return false; int temp = sum / 3; int len = A.size(); int left = 0, right = len - 1; int l

力扣第300题 最长上升子序列

力扣第300题 最长上升子序列 class Solution { public: int lengthOfLIS(vector<int>& nums) { int size = nums.size(); if (size == 0) { return 0; } vector<int> vec; int len = 1; vec.push_back(nums[0]); for (int i = 1; i < size; i++) { if (vec[len - 1] &

力扣第820题 单词的压缩编码

力扣第820题 单词的压缩编码 class TrieNode { public: map<char, TrieNode*> children; }; class Solution { public: void GetNum(TrieNode * node, int num, int& count) { if (node == NULL || node->children.size() == 0) { count += num + 1; return; } for (map<

[LeetCode] 887. 鸡蛋掉落

这道题好变态...... import java.util.Arrays; public class Solution { public int superEggDrop(int K, int N) { // dp[i][j]:一共有 i 层楼梯的情况下,使用 j 个鸡蛋的最少仍的次数 int[][] dp = new int[N + 1][K + 1]; // 初始化 for (int i = 0; i <= N; i++) { Arrays.fill(dp[i], i); } for (in