思维私塾——动态规划
动态规划(DP)说白了其实就是一种求解最优解的方法,是一种比较特殊的分治思想,利用它可以对时间复杂度进行优化,其主要是根据状态转移方程来进行求解。
动态规划解题方法
动态规划(Dynamic Programic,简称 DP)是一种求解最优解的方法,它是一种特殊的分治思想,利用它可以实现时间复杂度的优化,有时也可以进行空间复杂度的优化,有时是需要更多的空间的(相比其他方法)。
动态规划到底有多难?
它的大概意思先将一件事情分成若干阶段,然后通过阶段之间的转移达到目标。由于转移的方向通常是多个,因此这个时候就需要决策选择具体哪一个转移方向。
PHP实现 - 动态规划之背包问题
由于我司举办一个算法编程大赛,随机抽签下面图片的算法题目,想了一段时间记起之前在书(算法图解)上有一个算法比较符合,那就是动态规划中的“背包问题”。
2019-08-13
【算法】汇总
慢慢完善前言算法是亲力亲为的事,所以需要大量的时间去练习。由于时间有限,所以往往经典的题目是值得钻研的。同时在这个过程中分门别类,再进行大量总结。目录整数数组*字符串*链表*哈希表*栈*堆队列*树*堆前缀树二分查找*排序*(TODO)回溯*动态规划*图(TODO)*表示需要重点关注思维导图
2022-05-20
动态规划解题套路框架
读完本文,你可以去力扣拿下如下题目:509.斐波那契数322.零钱兑换-----------这篇文章是我们号半年前一篇 200 多赞赏的成名之作「动态规划详解」的进阶版。由于账号迁移的原因,旧文无法被搜索到,所以我润色了本文,并添加了更多干货内容,希望本文成为解决动态规划的一部「指导方针」。动态规划问题(Dynamic Program...
2020-11-09
golang写算法
最近在重温数据结构与算法知识,打算用golang将常用算法都实现一遍,主要包括:数组,单链表,双链表,队列,栈,排序算法,二分查找,二分查找扩展问题,二叉树搜索,大小堆,递归,回溯,贪心,分治,图的搜索,跳跃表,位图,缓存淘汰算法,动态规划,字符串搜索等,还有使用常用算法解决一些实际问题。
2020-08-31
动态规划套路详解
读完本文,你可以去力扣拿下如下题目:509.斐波那契数322.零钱兑换-----------这篇文章是我们号半年前一篇 200 多赞赏的成名之作「动态规划详解」的进阶版。由于账号迁移的原因,旧文无法被搜索到,所以我润色了本文,并添加了更多干货内容,希望本文成为解决动态规划的一部「指导方针」。动态规划问题(Dynamic Program...
2020-11-04
「数据结构与算法」动态规划学习笔记:线性动态规划
「数据结构与算法」动态规划学习笔记:线性动态规划用动态规划解决问题的过程有以下几个关键点:状态定义状态的转移初始化边界条件状态定义就是定义子问题,如何表示目标规模的问题和更小规模的问题。例如常见的方法:定义状态 dp[n],表示规模为 n 的问题的解,dp[n - 1] 就表示规模为 n - 1 的子问题的解。在实战中 dp...
2021-11-26
JS刷题总结
3.善用正则表达式。 (只要关于字符串的题目都应该联想到用正则表达式) 要会写正则,可以用正则表达式的几个函数也要掌握 正则中:exec,test 字符串中:search,match,replace,split 具体例子可以看我的:百词斩春招笔试题解 4.少写函数。 刷题不是写业务代码,没有说要封装重用,AC才是王道。 并且写函数还要...
2019-10-16
LeetCode | 面试题10- II. 青蛙跳台阶问题【剑指Offer】【Python】
LeetCode 面试题10- II. 青蛙跳台阶问题【剑指Offer】【Easy】【Python】【动态规划】 问题 力扣 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: {代码...} 示例 2: {代码...}...
2020-03-27
leetcode 279. Perfect Squares 完全平方数(中等)
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。
2022-06-21
浅析常见的算法范式
作者:Aral Roca翻译:疯狂的技术宅原文:[链接]未经允许严禁转载首先明确三个概念:算法: 按步骤解决问题的过程。范式: 思考问题的模式。算法范式: 为问题构建高效解决方案的常规方法。本文讨论一些常用的算法范式,例如分治算法动态规划贪婪算法回溯算法分治法在排序算法中,合并和快速排序这两种算法的共同点就是...
看动画轻松理解「递归」与「动态规划」
在学习「数据结构和算法」的过程中,因为人习惯了平铺直叙的思维方式,所以「递归」与「动态规划」这种带循环概念(绕来绕去)的往往是相对比较难以理解的两个抽象知识点。
LeetCode(6) 最长回文字符串
看到这道题目,首先想到回文字符串,是一个沿正中字符串对称的字符串,一个字符串如果时回文字符串,去除两端的字符串也必为回文字符串,由此设中间的字符串为子状态,应该可以用动态规划的方式求解。这里设置储存状态的数组为dpi,为字符串(i~j)子串是否为回文字符串。编程思路如下:具体代码如下所示:定义了一个pali...
2020-11-02
递推算法与递推套路(算法基础篇)
相信了解算法同学经常会说动态规划太难了,看到题目完全不知从何下手,或者是说“一看题解就会,一看题目就废”这样的一个状态。本质上是由于学习动态规划的时候,学习方法不对,最终导致南辕北辙,没有掌握其中精髓。而动态规划与递推算法又有着暧昧不清的关系,我们选择先从递推算法入手,一步一步揭开动态规划的神秘面纱。
Unique Paths I & II leetcode
A robot is located at the top-left corner of a m x n grid (marked'Start' in the diagram below). The robot can only move either down or right at any point in time. Therobot is trying to reach the bottom-right corner of the grid (marked'Finish' in the diagram below). How many possible unique paths ...