算法
文章平均质量分 61
一只胡说八道的猴子
共勉!!高处见!
展开
-
一文带你领会回溯法
回溯法概述回溯法思路的简单描述是:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。基本思想类同于:图的深度优先搜索二叉树的后序遍历可以得出解决一个回溯问题,实际上就是一个决策树的遍历过程,只有弄清楚以下三个问题1.路径:也就是已经做出的选择2.选择列表:当前可以做的选择3.结束条件:也就是到达决策树底层,无法在做选择的条件基本解题框架//定义一个集合存储结果def backtrack(路径,选择列表) i原创 2021-04-04 08:06:59 · 147 阅读 · 1 评论 -
DFS与BFS的区别
DFS与BFS的区别只有DFS不可以找到最短路径吗DFS当然也可以找到最短路径,但是时间复杂度也是O(n),但是实际上比BFS低效的很多,DFS是依靠递归的堆栈记录走过的路径的,要找到路径必须把二叉树中的所有叉都走完,然后才可以找出最短路径,但是BFS是一步步起头并进的,可以在没有遍历完整棵树的情况下就可以找出最短路径,这其实就是层序遍历,形象的来说DFS是线,BFS是面,BFS是集体行动,DFS是线BFS与DFS的使用场景BFS虽然可以找到最短距离但是空间复杂度高,而DFS的空间复杂度较低还看刚原创 2021-04-04 08:06:20 · 1183 阅读 · 0 评论 -
一文带你领会BFS广搜
BFS(Breath First Search)算法套路框架BFS问题的本质概述在一副图中找到从起点start到终点target的最近距离,这个例子听起来很枯燥,但是BFS算法问题其实就是在干这件事。应用场景连连看游戏中,消除两个方块不仅图案相同,而且还要保证两个方块直接的最短连线不能多于两个拐点,即两个方块直接的可达性问题连连看的本质其实也是一张图,让你从起点走到终点,问最短路径这就是连连看的本质BFS问题的解题方法基本框架基本思想通过一个队列保存节点,然后通过该队列中的节点不断的去原创 2021-04-04 08:05:44 · 139 阅读 · 0 评论 -
一文带你入门动态规划
动态规划写在前面没思路的时候就把树画出来,这会事半功倍概述我们首先明确一点,动态规划问题的一般形式就是求最大值或者最小值。其核心就是穷举。因为求最值肯定要将其全部的可能都列出来,这才找的出最值。动态规划适合的穷举具有重叠子问题的特征,如果暴力穷举,效率回极其低下,所以需要备忘录或则DB table来优化穷举过程,避免不必要的计算。动态规划问题一定具备最优子结构性质,这样才可以通过子问题得到原问题的解。动态规划问题的核心是就是穷举出最值,但是问题可以千变万化,穷举出所有可行解并不是 容易的事情原创 2021-04-01 11:42:26 · 180 阅读 · 0 评论 -
判断一棵树是否为完全二叉树
解题思路循环执行以下操作即可如果树为空返回false如果树不为空,开始层序遍历二叉树1.如果node.left!=null node.left入队列2.如果node.left==null,二node.right!=null,返回false3.如果node.right!=null,将node.right入队4.如果node.right==null则后续遍历的节点必须都是叶子节点才可以返回true遍历结束返回false实现代码实现代码 1 public boolean TreeCompl.原创 2021-03-13 20:05:56 · 82 阅读 · 0 评论 -
递归与分治算法解析
递归与分治算法解析递归递归的概念:直接或者间接调用自身算法称为递归算法,像俄罗斯套娃一样一层一层分治分治:将一个难以解决的大问题分割成一些规模较小的相同的问题,以便各个击破,即份分而治之分治法使用的场景该问题的规模缩小到一定程度就可以容易的解决;该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;利用该问题分解出子问题的解,可以合并为该问题的解;该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题;分治与递归像是一堆孪生兄弟,经原创 2020-12-22 08:43:07 · 2616 阅读 · 0 评论 -
leetcode 20. 有效的括号
题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true题解1import原创 2020-11-11 19:33:19 · 77 阅读 · 0 评论 -
数字三角形问题 动态规划
数字三角形问题 动态规划OJ 问题:Triangle(参见 http://poj.org/problem?id=1163)题意:在数字三角形上寻找一条沿相邻顶点从顶到底走的路径,使路径上的数字和最大。输入:三角形高度 n,数字三角形数值。输出:最大数字和。解决思路:由下而上逐个计算个点到最低端的最大路径,因为最大路径的子路径也一定是最大路径,而且右下而上只有两个方向,一个是正上方一个是右上方比如4到达最顶端的最大路径的子路径一定包含2和7,而2到顶端的最大路径一定包含8或者1,以此类推我们原创 2020-10-31 20:49:15 · 842 阅读 · 0 评论