![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 73
山主_33
微信搜:山主
展开
-
《算法》系列—动态规划,你学废了吗?
1.前言 今天聊一聊动态规划的问题,动态规划问题的一般形式就是求最值。在这类问题中,可能会有多个解,但是我们希望找到最优的解。 动态规划算法与前面的分治算法类似,基本思想也是将求解的问题分解为子问题求解。与分治算法不同的是,适合动态规划算法来求解的问题,分解得到的子问题太多,有的子问题还会被重复计算很多次。如果把计算过的子问题的结果保存,就能够避免大量重复的计算,这就是动态规划算法的基本思想。 解决动态规划问题的三步骤一般如下: a.找子问题; b.定义状态; c.列状态(DP)方程; 本文将解决两个动态规原创 2021-01-18 10:19:35 · 158 阅读 · 1 评论 -
《算法》系列-深度、广度优先搜索
1.广度优先搜索(BFS) 定义:又叫做层次遍历,从上往下对每一层,从左往右(也可以从右往左)访问节点,访问完一层就进入下一层,直至没有节点为止。 用图来直观的看一下: 先来说一下解题思路: 广度优先遍历是一层一层的往下去遍历,我们可以用一个队列(先进先出)来存储每一层的节点,在遍历每一个节点时,取它下一层的节点,放到队列的末尾,遍历完一层时,下一层的节点也放到了队列中。我们在放入节点时,记录下一层的节点数量,就可以在队列中区分出每一层的节点了,这样就完成了广度优先遍历。 下面来看一下广度优先遍历的代码模原创 2021-01-08 11:38:42 · 329 阅读 · 1 评论 -
《算法》系列—大白话聊分治、回溯,手撕八皇后
1.分治 分治就是分而治之,即把一个问题分解成很多个子问题,且这些问题与原问题结构相似,然后递归解决子问题,最后合并子问题的结果,得到原来问题的结果。 分治解题三个步骤: 分解:将问题分解成与原问题结构相似的子问题 解决:递归求解各个子问题,当子问题足够小,直接返回结果(问题分解到足够小,分解终止条件) 合并:将子问题的结果合并,得到原问题的结果 分治算法也是一种递归,之前有写到过递归的模板,这里也贴一下分治算法的模板。 接下来看个问题,深入了解一下分治算法,并套用一下模板。 首先按照分治解题的三个步原创 2020-12-30 14:06:09 · 295 阅读 · 1 评论 -
《算法》系列—递归
引言 学妹问我递归是什么?应该怎么写? 递归就是在运行过程中调用自己。 构成递归需具备的条件: 1.子问题须与原始问题为同样的事,且更为简单; 2.不能无限制地调用本身,须有个出口,化简为非递归状况处理。 当我们遇到一个递归问题的时候,不要人肉递归!不要人肉递归!不要人肉递归! 方法 1.找最近的重复子问题; 学妹:什么是重复的子问题呢? 我:就是找到解决问题的过程中的【重复的事件】,这个【重复的事件】可以理解为我们的递归函数,虽然递归函数的处理逻辑是一样的,但是所用到的参数的值不一样(参数的值原创 2020-12-25 21:35:05 · 146 阅读 · 0 评论 -
数据结构与算法(C、C++、Java)
转载地址:http://www.cnblogs.com/skywang12345/p/3603935.html 最近抽空整理了"数据结构和算法"的相关文章。在整理过程中,对于每种数据结构和算法分别给出"C"、"C++"和"Java"这三种语言的实现;实现语言虽不同,但原理如出一辙。因此,读者在了解和学习的过程中,择其一即可! 下面是整理数据数据和算法的目录表,对于每一种按照C...转载 2018-11-01 17:55:27 · 627 阅读 · 0 评论 -
数据结构与算法(Java)
转自:http://blog.csdn.net/column/details/datastructureinjava.html 目录 (1)数据结构与算法概念解析 (2)数据结构之数组 (3)数据结构之栈 (4)数据结构之队列 (5)数据结构之链表 (6)数据结构之二叉树 (7)数据结构之霍夫曼树 (8)数据结构之红黑树(一)——基础分析 (9)数据结构之红黑树(二)——插入操作 (10)数据结...转载 2018-11-01 17:41:56 · 253 阅读 · 0 评论 -
求二叉树根节点到子节点和为某一值的所有路径(Java实现)
该问题应该属于二叉树遍历一类的问题吧。简单描述一下:/** * 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 * 如下二叉树,和25 * 8 * / \ * 8 7 * / \ * 9 2 * / \ * 4 7 * 返回输出结果...原创 2018-03-04 21:27:30 · 1863 阅读 · 0 评论 -
关于爬楼梯问题以及优化
题目是这样的:假设你正在爬楼梯,一共有N阶楼梯。但每次你只能爬一阶或者两阶,你能有多少种不同的方法爬到楼顶部?初出茅庐,面试被问到,回家做个笔记记录一下。最先想到的应该是用递归的方法解:public static int climbStairs1(int n) { int ways; if(n==1||n==2) { ways = n; ...转载 2018-02-25 20:27:58 · 630 阅读 · 0 评论 -
java实现二叉树的前中后遍历(递归和非递归)
这里使用下图的二叉树作为例子:首先建立树这个类:public class Node { private int data; private Node leftNode; private Node rightNode; public Node(int data, Node leftNode, Node rightNode) { this.data =...转载 2018-02-25 20:26:57 · 274 阅读 · 0 评论