![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
2NaCl
主攻Java后端开发与云计算Paas平台、离线大数据平台相关
展开
-
贪心算法
贪心算法是一种一条路走到黑,不论如何也要达到目的的算法思想,有很多应用都是通过贪心算法来实现的,比如Huffman Coding,Prim,Kruskal和最小生成树算法。首先,我们要如何才能理解贪心算法?先看一个经典的背包问题。假设我们有一个可以容纳100kg物品的背包,可以装各种物品。我们有以下5种豆子,每种豆子的总量和总 价值都各不相同。为了让背包中所装物品的总价值最大,我们如何选择在...原创 2019-08-05 18:56:33 · 356 阅读 · 0 评论 -
递归算法
大家应该都知道推荐注册返还佣金的功能,很多app都有这个功能,比如用户a推荐用户b注册,用户b又推荐用户c注册。推荐人往往都会得到报酬,而这个推荐关系在数据库中可以这样显示,假设actor_id表示用户id,referrer_id表示推荐人id。那么,如果我们想要找到最终推荐人的话,要怎么书写算法呢?于是,我们就可以考虑使用递归了。如何理解递归算法看过之前几篇文章的人就应该知道,在回溯算...原创 2019-08-08 18:05:46 · 433 阅读 · 0 评论 -
分治算法
之前我们介绍过了MapReduce框架,而MapReduce框架的本质就是分治算法,附上链接MapReduce如何让数据完成一次旅行如何理解分治算法分治算法的核心就是,分而治之,也就是将原问题划分成为n个规模比较小,并且和原问题相似的子问题,递归的解决这些子问题,然后再合并结果,得到原问题的解。当然,分治算法和昨天说的贪心算法的本质也是差不多的,都是一种处理问题的思想,而不是编程的框架。从...原创 2019-08-06 16:39:27 · 861 阅读 · 0 评论 -
动态规划(DP)算法初识
先用大白话来说一下几种经典算法大概的意思:贪心算法:我就一次机会,为了达到目的,其他的我啥也不考虑回溯算法:我有无数次机会,还能怕我有达不到目的的时候?动态规划算法:我能随意在任何时候进行存档读档,用最华丽的方法走到终点。接下来的几篇文章可能都会围绕dp来说,从白话和较多篇幅去解释dp算法的内在简述动态规划求解出最优策略的原理是因为显著的降低了时间复杂度,提高了代码的运行效率,但动...原创 2019-08-09 17:06:49 · 8199 阅读 · 1 评论 -
回溯算法
按理来讲,回溯算法和动态规划算法是面试中笔试相对考的比较多的两个算法,区别在于一个可以重头再来一个可以无限读档,反正都是很bug的,所以就从这篇文章来看看回溯算法是怎么做到无限重来的吧。先说一下常见的回溯算法考的体型有:数独,八皇后,0-1背包,图的着色,旅行商问题和全排列等等。下面就来介绍一下回溯算法如何理解回溯算法我们之前所介绍的这些贪心分治算法无非都是让策略最优,贪心算法可以让我们每...原创 2019-08-07 16:28:28 · 227 阅读 · 0 评论 -
动态规划(DP)理论
上一篇专栏主要用几个程序来解释了回溯和动态规划之前的区别,但是没有说出动态规划本质的特色,就像贪心算法的三个步骤一样,直抒胸臆,于是这篇专栏便会主要围绕着解题思路来讲,目的就是让大家明白什么样的问题可以使用动态规划算法,解决动态规划问题的思路是什么样的,贪心,分治,回溯,动态规划这四种算法的思想又有什么区别和联系?...原创 2019-08-10 15:13:54 · 517 阅读 · 0 评论 -
leetcode-63-dp经典算法题笔记
此题和leetcode 62题状态转移方程是一样的,但是迁入了障碍物的概念,如果需要知道状态转移方程的思路,可以参考https://blog.csdn.net/qq_41936805/article/details/100179828解出此题,我们必须知道对于障碍物的特点如下:障碍处的dp值=0我们已经知道了,动态转移方程为dp[i][j]=dp[i][j-1]+dp[i-1][j]...原创 2019-09-01 13:12:21 · 244 阅读 · 0 评论