动态规划(1)——斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*...
2017-11-01
算法:分治法、贪心算法、动态规划
分治法类似动态规划明确设定一条基线根据这条基线可以不停的将问题分解,直到所有内容符合基线标准 {代码...} 示例 {代码...} 贪心算法利益最大化 始终查找最大的项目,尽可能快满足需求何时适用贪婪:需要查找最大项目等类型,同时满足利益最大化 {代码...} 动态规划动态规划(何时使用动态规划) - 将待求解的问题分解成...
2021-10-22
Leetcode专题[数组]-300-最长递增子序列
leetcode链接:[链接]解题思路:动态规划 {代码...}
2023-09-02
leetcode-95-Unique Binary Search Trees II
题目解读: 穷举列出所有二叉树的结构类型。重点: 动态规划,关注临近root,left,right之间的关系应用:穷举组合,动态规划穷举组合,适用于相邻元素有规律。bug处:注意边界值的情况。不能有重复,遗漏。
2018-08-13
算法之旅总览
常用算法思想 回溯法 分治法(Divide and Conquer)怎么用? 动态规划怎么用? 常见动态规划的解决思路 详细分析背包问题 数据结构 AVL树:解决BST可能导致的长链问题 Binary Search Trees(BST) 一种插入、查找后继节点耗时为 lglgu 的算法van Emde Boas Trees 排序算法 常见排序算法 图算法 广度优先搜索算法(Breath-firs...
算法--最长公共子序列(LongestCommon Subsequence, LCS)
定义: 两个字符串共有的最长的子序列(可不连续),最长公共字符串(Longest CommonSubstring)是两个字符串共有的最长的连续字符串。 方法:穷举法,动态规划 动态规划法的简介: 《后补》 代码思路: 《后补》 Python 代码: {代码...}
2014-05-26
来谈谈动态规划
在leetcode上做题时,经常会碰到有关动态规划的问题,在leetcode的题库界面可以看到有着动态规划标签的题目还是挺多的,为了搞明白这个东东,我查了不少资料,现在来整理一下思路,试试把动态规划这个概念讲清楚。
2019-08-19
LeetCode 5.Longest Palindromic Substring 求解
是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题[1]和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,...
2017-09-10
CSP-J(NOIP普及组)复赛历年真题考察知识点
本文总结2013-2021年CSP-J(NOIP普及组)复赛真题。知识点用词尽量靠近《全国青少年信息学奥林匹克系列竞赛大纲》中入门级内容。知识点题目位运算,数的进制2020-T1字符串的处理2019-T1,2018-T1,2016-T2STL模板应用(stack、queue、list、forward_list)2021-T4,2020-T3,2019-T2,2016-T3,2015-T4,2013-T2二叉树20...
2022-09-25
一文搞懂动态规划
前言大家好,我是bigsai,好久不见,甚是想念(天天想念)!很久前就有小伙伴被动态规划所折磨,确实,很多题动态规划确实太难看出了了,甚至有的题看了题解理解起来都费劲半天。动态规划的范围虽然确实是很广很难,但是从整个动态规划出现的频率来看,这几种基础的动态规划理解容易,学习起来压力不大,并且出现频率非常...
2021-11-09
一文学懂动态规划
前言在之前的一篇文章详解递归的正确打开方式中,我们详细讲解了经典的斐波那契数列问题从递归到 DP 的优化过程,$$ f(n) = f(n-1)+f(n-2) $$ {代码...} 体会了递归的思想,即:递归的实质是能够把一个大问题分解成比它小点的问题,然后我们拿到了小问题的解,就可以用小问题的解去构造大问题的解。但缺点就是随着 n 值...
每日一练(5):斐波那契数列
title: 每日一练(5):斐波那契数列categories:[剑指offer]tags:[每日一练]date: 2022/01/18每日一练(5):斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,...
2022-01-18
[算法笔记]动态规划之最长公共子串和最长公共子序列
本文是《算法图解》笔记 应用场景 一切脱离实际应用场景的算法都是耍流氓! 生物学家根据最长公共序列来确定 DNA 链的相似性,进而判断两种动物或疾病有多相似。最长公共序列还被用来寻找多发性硬化症治疗方案。 源代码管理中,git diff指令,可以查找出编辑前后文件的差异,这是基于动态规划实现的。 编辑距离(levensh...
GitHub上标星79K的LeetCode算法小抄开放下载了
在大厂面试中我们不可避免的会考到算法,为什么大厂一定要考察算法呢?因为它包含了太多的逻辑思维,可以考察你思考问题的逻辑和解决问题的能力;这一点也是面试官比较看重的,因为它可以反映出你的潜力,我曾经听阿里一位资深面试官这样讲过:当一个人逻辑思维和能力不错的情况下,你还会担心专业的业务知识方面他不行...
2023-01-10
力扣198——打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
2020-01-20
什么样的问题应该使用动态规划
说起动态规划,我不知道你有没有这样的困扰,在掌握了一些基础算法和数据结构之后,碰到一些较为复杂的问题还是无从下手,面试时自然也是胆战心惊。如果我说动态规划是个玄幻的问题其实也不为过。究其原因,我觉得可以归因于这样两点:
动态规划
动态规划引子 - 爬楼梯在正式聊动态规划之前,我们先来看一个经典问题1.爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?2.问题分析假设台阶总数为10,我们先不考虑从第 0~ 8 阶的过程,也不考虑从0~9的过程,想要到达第10阶,最后一步必然有两个...
2021-04-25