Day9力扣打卡

打卡记录

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

链接

用 fij 表示投了 i 次投骰子得到点数总和,从而得到状态转移方程 fij=fi−1j+fi−1j−1+⋯+fi−1j−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;
    }
};
相关推荐
罗西的思考3 小时前
【Agentic RL】Dressage Staleness 控制深度分析
人工智能·算法·机器学习
quaer3 小时前
弗洛伊德算法--判圈法寻找环的入口O(n) O(1)
数据结构·算法
丰色木夕4 小时前
Ubuntu22.04下源码编译安装USD-Brep
c++·ubuntu·nvidia·usd-brep
文丑颜不良啊4 小时前
LeetCode51~75题目解析
leetcode
高晶5 小时前
无乘法器实现LC二阶滤波器:基于移位运算的快速算法与四种精度推导
算法·设计模式·程序员
ysbfsy5 小时前
大数计算思路
算法
高晶5 小时前
主从自动分配算法:平均值乘以设备数一半的选举基准值解析
算法·设计模式·程序员
学电子她就能回来吗5 小时前
LeetCode Hot 100|普通数组专题学习笔记(零基础版)
笔记·算法·leetcode
用户老李5 小时前
反向传播计算梯度举例
算法
niyongsheng5 小时前
多智能体连续时间内路径规划:AA-SIPP(m) 的 Rust 实现与算法
算法·rust·机器人