| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> LeetCode算法题6:动态规划 -> 正文阅读 |
|
[数据结构与算法]LeetCode算法题6:动态规划 |
前言??????Leetcode算法系列:https://leetcode-cn.com/study-plan/algorithms/?progress=njjhkd2 ??????简单总结一下动态规划相关的算法题: ??????关于动态规划的介绍见博客:https://blog.csdn.net/Little_ant_/article/details/124231043 一、爬楼梯??????题目链接:https://leetcode-cn.com/problems/climbing-stairs/ ??????题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? DP??????此问题的状态可以描述为,f(n) :爬到第 n 阶可以采用的方法个数。根据题意可知:由于每次可以爬 1 个或 2 个台阶,所以想要爬到第 n 阶需要先到达 n-1 阶 或 先到达 n-2 阶,这两种情况都可以到达第 n 阶,在第 n-1 阶只能在爬 1 个台阶,在第 n-2 阶只能爬 2 个台阶(在此时爬 1 个台阶的情况已经包含在 f(n-1) 中了)。 ??????状态转移方程为:f(n)=f(n-1)+f(n-2),等于 f(n-1) 和 f(n-2) 的方法数之和。 ??????参考算法如下:
二、打家劫舍??????题目链接:https://leetcode-cn.com/problems/house-robber/ ??????题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 DP:??????假设有 n 间屋子,在偷到 n 间屋子所能得到的最大金额取决于一个限制条件,即是否在第 n-1 间屋子偷东西。如果偷的话:那么在 n 间屋子偷到的最大金额等于在前 n-1 间屋子里偷到的最大金额;否则等于在前 n-2 间屋子中偷到的最大金额加上第 n 间屋子中的金额。 ??????所以状态描述为,f(n):一直到偷到第 n 间屋子所能得到的最大金额。 ??????状态转移方程为:f(n)=max(f(n-1),f(n-2)+第 n 间屋子的金额)。
三、三角形最小路径和??????题目链接:https://leetcode-cn.com/problems/triangle/ ??????题目描述: 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。 DP:??????最初将状态描述为,f(n):在第 n 行能够得到的最小路径和。认为在第 n 行能够得到的最小路径和与第 n-1 行得到最小路径和的位置有关,即从第 n-1 行中最小路径和的位置出发来判断第 n 行的最小路径和以及位置。然而这样做是有问题的,没有考虑到第 n 行中其他位置的元素(因为从上一行某个位置出发,那么总有在这一行中判断不了的位置)。 ??????如果说,想直接得到某一行的最小路径和是将问题想的过于简单了,那么就稍微复杂一些,直接求出在每一行中的每一个位置的最小路径和,从一维扩展到二维。 ??????所以将状态描述为,f(i,j):在位置(i,j)处的最小路径和。 ??????状态转移方程为:f(i,j)=min(f(i-1,j),f(i-1,j-1))。 ??????参考算法如下:
??????上面的算法可以很简单的转换为空间复杂度为 O(n) 的解法,务必参考官方题解:https://leetcode-cn.com/problems/triangle/solution/san-jiao-xing-zui-xiao-lu-jing-he-by-leetcode-solu/,思路挺不错的。 总结??????完 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:21:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |