算法篇——动态规划大集合(js版)

news2024/12/24 20:29:57

509. 斐波那契数

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n) 。
链接:https://leetcode.cn/problems/fibonacci-number

var fib = function(n) {
    var dp = [0, 1];
    for(var i = 2; i <= n; i++) dp[i] = dp[i-1] + dp[i-2];
    return dp[n];
};

70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

链接:力扣

var climbStairs = function(n) {
    const dp = [1, 2];
    for(let i = 2; i < n; ++i) {
        dp[i] = dp[i - 1] + dp[i - 2];
    }
    return dp[n-1];
};

 746. 使用最小花费爬楼梯

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。
链接:https://leetcode.cn/problems/min-cost-climbing-stairs

var minCostClimbingStairs = function(cost) {
    var k = cost.length;
    // 楼梯台阶的花费(因为要到楼顶,所以+1)
    var dp = new Array(k+1);
    // 出发台阶的最小值
    dp[0] = dp[1] = 0;
    for(var i = 2; i <= k; i++) {
        dp[i] = Math.min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2]);
    }
    return dp[k];
};

62.不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?
链接:https://leetcode.cn/problems/unique-paths

var uniquePaths = function(m, n) {
    var dp = new Array(m).fill().map(() => Array(n));
    for (var i = 0; i < m; i++) dp[i][0] = 1;
    for (var j = 0; j < n; j++) dp[0][j] = 1;
    for(var i = 1; i < m; i++) {
        for(var j =1; j < n; j++) 
            dp[i][j] = dp[i-1][j] + dp[i][j-1];
    }
    return dp[m-1][n-1];
};

63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。
链接:https://leetcode.cn/problems/unique-paths-ii

var uniquePathsWithObstacles = function(obstacleGrid) {
    var m = obstacleGrid.length, n = obstacleGrid[0].length;
    var dp = new Array(m).fill().map(() => Array(n).fill(0));
    for (var i = 0; i < m && obstacleGrid[i][0] == 0; ++i) dp[i][0] = 1;
    for (var j = 0; j < n && obstacleGrid[0][j] == 0; ++j) dp[0][j] = 1;
    for(var i = 1; i < m; ++i) {
        for(var j =1; j < n; ++j) {
            dp[i][j] = obstacleGrid[i][j] != 1 ? dp[i-1][j] + dp[i][j-1] : 0;
        }  
    }
    return dp[m-1][n-1];
};

343. 整数拆分

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

返回 你可以获得的最大乘积 。

链接:力扣

var integerBreak = function(n) {
    // 最大乘积
    var dp = new Array(n+1).fill(0);
    dp[2] = 1;
    for(var i = 3; i <= n; i++) {
        for(var j = 1; j < i-1; j++) {
            dp[i] = Math.max(dp[i], (i-j) * j, dp[i-j] * j);
        }
    }
    return dp[n];
};

96.不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

链接:力扣

var numTrees = function(n) {
    var dp = new Array(n+1).fill(0);
    dp[0] = 1;
    for(var i = 1; i <= n; i++) {
        for(var j = 1; j <= i; j++) {
            dp[i] += dp[j - 1] * dp[i - j]; 
        }
    }
    return dp[n];
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业论文选题推荐|软件工程|系列六

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于(***语言)的研发部署管理…

正视架构设计的重要作用

要讨论软件架构设计在软件开发中的重要作用&#xff0c;首先让我们来了解一下目前国内软件的开发现状。   总的来说&#xff0c;国内的多数企业仍然是采用“瀑布模型”作为软件开发过程的主要模型。虽然在采用瀑布模型的同时可能会引入原型法以及诸如MSF等其它软件开发方法与…

必须要掌握的音视频编码、解码基础!

一、音视频为什么要编码&#xff1f; 音视频编码技术在音视频领域有着举足轻重的地位&#xff0c;这是由于音视频原始数据量较大&#xff0c;在传输的过程中如果不进行编码的话&#xff0c;则无法进行传输。比方说&#xff0c;一张普通的图片的大小大概是1-2M&#xff0c;假设我…

CH-90Na螯合树脂技术在废水除镍、除总铬、除重上的应用

电镀是利用电化学的方法对金属和非金属表面进行装饰、防护及获得某些新的性质的一种工艺过程。为保证电镀产品的质量&#xff0c;使金属镀层具有平整光滑的良好外观并与基体牢固结合&#xff0c;必须在镀前把镀件表面上的污物&#xff08;油、锈、氧化皮等&#xff09;彻底洗干…

美国Keysight是德科技34461A万用表

安捷伦Keysight是德科技34461A万用表 安捷伦万用表 附加功能&#xff1a; 带有内置条形图、直方图、趋势、数学和统计数据的彩色图形显示 I/O&#xff1a;USB、LAN/LXI、GPIB&#xff08;可选&#xff09; 已启用 BenchVue。从您的 PC 控制您的 DMM&#xff0c;以轻松查看和捕…

【沐风老师】3dMax粒子拖尾光效插件Ky_Trail使用教程

Ky_Trail粒子拖尾光效插件使用教程 【Ky_Trail 用户界面】 Ky_Trail粒子拖尾光效插件,可以模拟各种粒子拖尾效果动画。 【适用版本】 3dMax4 - 2021 【安装方法】 将插件文件“Ky_Trail.dlv”复制到3dMax插件目录中(3ds Max\plugins”)。 【使用方法】 1.插件安装完成后启…

github某0day漏洞投毒与钓鱼样本分析

前言 近日&#xff0c;烽火台实验室监测到多起针对安全人员的钓鱼攻击。其中一例利用MS Office Word 0DAY进行钓鱼&#xff0c;在github.com和Telegram群组中公开0DAY利用程序&#xff0c;其中并没有包含真正的利用程序&#xff0c;但是却捆绑了木马。运行后下载和执行木马程序…

git rebase问题:First, rewinding head to replay your work on top of it

分支上使用 git rebase 主干名 同步代码时提示&#xff1a; First, rewinding head to replay your work on top of it... 具体信息如截图&#xff1a; 用下面的命令可以解决&#xff1a; git fetch origin; git reset --hard origin/<branch>

UM2002 一款低功耗SUB-1G 无线接收机芯片

UM2002 是一款工作于 200MHz~960MHz 范围内的低功耗、高性能、单片集成的(G)FSK/OOK 无线接收机芯片。内部集成完整的射频接收机、频率综合器、解调器&#xff0c;只需配备简单、低成本的外 围器件就可以获得良好的接收性能。 芯片支持灵活可设的数据包格式&#xff0c;支持数据…

技术如何通过API接口获取自己想要同款商品的数据

一、随着电子商务的兴起&#xff0c;越来越多的人开始关注如何通过API接口获取自己想要同款的商品数据。本文将介绍如何利用API接口获取商品数据&#xff0c;以及一些必要的步骤和注意事项。 第一步&#xff1a;寻找适当的API接口 在开始获取商品数据之前&#xff0c;我们需要…

力扣 239. 滑动窗口最大值

题目来源&#xff1a;https://leetcode.cn/problems/sliding-window-maximum/ C题解&#xff1a;用暴力解法会超时。下面题解参照代码随想录 为了使队列窗口能快速找对最大值&#xff0c;自定义一个单调队列&#xff0c;队首为最大值&#xff0c;每次push进去的元素值都比队列…

FPGA纯verilog代码实现H264视频压缩 提供工程源码和技术支持

这里写目录标题 1、前言2、我这里已有的视频图像编解码方案3、H264视频压缩理论4、H264视频压缩-性能表现5、H264视频压缩-设计方案6、Vivado工程详解7、Vivado功能仿真8、福利&#xff1a;工程代码的获取 1、前言 H264视频压缩与解码在FPGA图传领域应用广泛&#xff0c;Xilin…

java+springboot基金股票信息系统的设计与实现

Spring Boot 是 Spring 家族中的一个全新的框架&#xff0c;它用来简化Spring应用程序的创建和开发过程。也可以说 Spring Boot 能简化我们之前采用SSM&#xff08;Spring MVC Spring MyBatis &#xff09;框架进行开发的过程。基于JAVA的基金分析系统包括后台管理和前端。前…

31从零开始学Java之详解如何定义方法

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 经过前面两篇关于面向对象、类和对象的文章&#xff0c;壹哥相信你现在对面向对象已经有了基本的了解…

微信小程序配置实现中英文国际化语言切换

目录 1,在根目录新建文件夹和js文件 2. 在main.js中设置全局语言状态&#xff08;默认设置为中文&#xff09; 3. 页面添加 语言切换按钮&#xff08;登录页面&#xff09; 4. 在需要显示的页面导入使用 1,在根目录新建文件夹和js文件 根目录新建一个locales.js文件, 通用…

苹果手机通话怎么录音?通话录音的详细教程!

案例&#xff1a;iPhone怎么一边通话一边录音&#xff1f; 【苹果手机通过普通的方式不能边通话边录音&#xff0c;有什么方法可以帮到我吗&#xff1f;感谢&#xff01;】 录制通话可以帮助用户记录重要的电话内容&#xff0c;如商务谈判、家庭事务等。但是录音涉及隐私&…

Java基础(41)Java输入/输出流

在Java中所有数据都是使用流读写的。流是一组有序的数据序列&#xff0c;将数据从一个地方带到另一个地方。根据数据流向的不同&#xff0c;可以分为输入&#xff08;Input&#xff09;流和输出&#xff08;Output&#xff09;流两种。 什么是输入/输出流 Java 程序通过流来完…

Unity3D :创建您的第一个运行时 UI

ygtu May 16, 2023 • 27 min read 推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 创建您的第一个运行时 UI 本页将指导您完成使用 UI 工具包设置简单字符选择屏幕的步骤。它涵盖了 UI 元素和模板的创建、场景设置以及如何将脚…

公网SSH远程连接Termux - 电脑使用安卓Termux【cpolar内网穿透】

文章目录 1.安装ssh2.安装cpolar内网穿透3.远程ssh连接配置4.公网远程连接5.固定远程连接地址 使用安卓机跑东西的时候&#xff0c;屏幕太小&#xff0c;有时候操作不习惯。不过我们可以开启ssh&#xff0c;使用电脑PC端SSH远程连接手机termux。 本次教程主要实现在安卓手机te…

如何提高PID控制器离散化精度(SCL+梯形图代码)

通常采样率(执行频率)1/Ts的典型取值为闭环带宽的5~10倍。实际上大部分工程采样率范围会使我们所期望的闭环性能下降,要忽略采样造成的影响,采样率至少是典型值的10倍。原则上,采样率1/Ts在允许的计算能力范围内越大越好。当采样率较低时,提高PID控制器离散化精度的一种方…