Day9力扣打卡

打卡记录

掷骰子等于目标和的方法数(动态规划)

链接

用 f[i][j] 表示投了 i 次投骰子得到点数总和,从而得到状态转移方程 f[i][j]=f[i−1][j]+f[i−1][j−1]+⋯+f[i−1][j−min(k−1,j)] 。

cpp 复制代码
class Solution {
public:
    int numRollsToTarget(int n, int k, int target) {
        const int MOD = 1e9 + 7;
        vector<int> f(target + 1, 0);
        f[0] = 1;
        for (int i = 1; i <= n; ++i) {
            for (int j = target; j >= 0; --j) {
                f[j] = 0;
                for (int x = 1; x <= k && x <= j; ++x)
                    f[j] = (f[j] + f[j - x]) % MOD;
            }
        }
        return f[target];
    }
};

长度最小的子数组(双指针 滑动窗口)

链接

满足条件就排出前面的元素,保证满足条件的窗口,然后求解每回窗口坐标的最小值。

cpp 复制代码
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int n = nums.size(), sum = 0, ans = 0x3f3f3f3f;
        for (int i = 0, j = 0; i < n; ++i) {
            sum += nums[i];
            while (j < n && sum >= target) {
                ans = min(ans, i - j + 1);
                sum -= nums[j++];
            }
        }
        return ans == 0x3f3f3f3f ? 0 : ans;
    }
};
相关推荐
众少成多积小致巨14 小时前
GNU Make 核心指南
android·c++
ECT-OS-JiuHuaShan14 小时前
整体论体系定理,全球开放,无法绕过
人工智能·科技·学习·算法·生活
贾斯汀玛尔斯14 小时前
每天学一个算法--BM25(Okapi BM25)
算法
谭欣辰14 小时前
详细讲解 C++ 状压 DP
开发语言·c++·动态规划
William_wL_14 小时前
【C++】stack和queue的使用和实现(附加deque的简单介绍)
开发语言·c++
山甫aa14 小时前
二叉树遍历----从零开始的数据结构
数据结构·c++·二叉树
grant-ADAS14 小时前
Overlay套刻测量
算法
猿长大人15 小时前
算法 | Douglas-Peucker 拯救“腰椎间盘突出的三角形”
算法
HackTorjan15 小时前
深度解析雪花算法及其高性能优化策略
人工智能·深度学习·算法·性能优化·dreamweaver
北顾笙98015 小时前
day35-数据结构力扣
数据结构·算法·leetcode