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