算法数据结构
文章平均质量分 71
专搞算法,结构
雨夜※繁华
用最强大的行动力诠释一个完美的自己,期望未来成为自己眼中的大神。改变命运!
展开
-
数据结构复习(栈队列一)实现前序、后序、中序表达式的互相转化及构建二叉树(代码实现)
栈和队列一()1、类型最大栈最小栈流式数据的最小值单调队列两个栈实现一个队列栈的前缀后缀表达式求值栈的出栈序列判断其他2、基本应用1) 150. 逆波兰表达式求值 后缀表达式求值波兰表达式计算 > 输入: ["2", "1", "+", "3", "*"] > 输出: 9解释: ((2 + 1) * 3) = 9学栈的时候,我们需要两个栈,一个是符号栈,一个是操作数栈,()需要去除。import java.util.Stack;class Soluti原创 2021-10-02 21:57:10 · 458 阅读 · 0 评论 -
计算完全二叉树的节点数(算法优化)
完全二叉树我们先来回顾一下什么是完全二叉树?一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。 ————来自维基百科从定义里面,我们就知道完全二叉树其对应的结点编号和对应的满二叉树是一致的。进而我们知道它的子树必然包含一颗满二叉树子树。计算完全二叉树的节点数(算法和优化复杂度)1、使用普通的二叉树节点数计算int countNode(TreeNode r原创 2021-03-04 13:39:53 · 1544 阅读 · 1 评论 -
二叉搜索树(关于BST新思维)
文章目录1、BST的定义回顾2、BST的增删改查3、BST的合法约束判断1、BST的定义回顾二叉查找树(英语:Binary Search Tree),也称为二叉查找树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉查找树;二叉查找原创 2021-03-01 16:02:33 · 165 阅读 · 0 评论 -
算法学习(七)回溯算法
文章目录回溯算法浅学1、回溯算法的思想1.1 概念1.2 对比穷举法(解空间不同、通过剪枝回溯实现)1.3 解空间和其他一些概念1.4 剪枝函数(当某个顶点没有希望则其所在树枝可以减去)1.5 回溯算法设计步骤2、实战例子2.1、货物装载问题(子集树)2.2、0-1背包问题(子集树)2.3 八皇后问题2.4、 地图中的点m-着色问题(回溯图)回溯算法浅学1、回溯算法的思想1.1 概念回溯法(back tracking)(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但原创 2020-07-26 18:47:37 · 404 阅读 · 0 评论 -
算法学习(五)图算法学习总结
文章目录图算法1、图的表示2、图的遍历2.1、BFS(宽度优先搜索、优先队列)2.2、DFS(深度优先搜索、递归算法)3、寻找最小生成树3.1、Prim算法3.2、 Kruskal算法4、最短路径问题4.1、单源最短路径问题4.2、所有点对最短路径问题图算法1、图的表示2、图的遍历2.1、BFS(宽度优先搜索、优先队列)对边搜索、不断延展。2.2、DFS(深度优先搜索、递归算法)递归调用顶点3、寻找最小生成树3.1、Prim算法3.2、 Kruskal算法4、最短路原创 2020-07-22 22:32:00 · 1426 阅读 · 0 评论 -
算法学习(四)贪心算法(重要)
文章目录贪心算法1、基本思想1.1、概述1.2、从任务选择问题里体会贪心算法设计步骤2、实战例子2.1、0-1背包问题(选-1还是不选-0)2.2、背包问题2.3、哈夫曼编码3、贪心算法和动态规划的区别贪心算法1、基本思想1.1、概述我们知道求解最优化问题的算法一般包括一系列的求解步骤,每一步骤都要在许多选择里面做一个决策,然后才能得到问题的一个解。贪心算法(Greedy Algorithm)总是在每一步骤中做出最优的决策,希望通过一系列的局部最优决策,从而获得问题的全局最优解。日常例子如:打原创 2020-07-19 12:46:39 · 362 阅读 · 0 评论 -
算法学习(二)分治递归
文章目录二、分治与递归1、递归1.1、递归的思想1.2、选择排序1.3、生成排列1.4、如何求解递归方程2、分治2.1、分治的思想2.2、什么时候可以使用分治2.3、简单样例2.3.1、二分搜索2.3.2、快速排序2.3.3、归并排序2.4、进阶样例2.4.1、覆盖残缺棋盘2.4.2、n位大整数的乘法运算2.4.3、Strassen矩阵乘法实现二、分治与递归1、递归1.1、递归的思想1.2、选择排序1.3、生成排列1.4、如何求解递归方程2、分治2.1、分治的思想2.2、什么时候可以使用分原创 2020-07-12 17:32:52 · 513 阅读 · 1 评论 -
算法学习(三)动态规划(重要)
什么是动态规划先来看一个例子原创 2020-07-09 12:08:45 · 480 阅读 · 0 评论 -
平衡二叉树及其算法实现
文章目录1、平衡二叉树1.1、什么是二叉搜索树1.2、二叉搜索树的缺点1.3、平衡二叉树的提出1.4、如何构建平衡二叉树(ALV树)1.5 失衡情况及其处理(4种)1.5.1 LL——(右旋)1.5.2 RR——(左旋)1.5.3 LR——>(先左旋再右旋)1.5.4 RL——>(先右旋再左旋)1.5.5 总结代码实现1.5.6 小结1.5.7 删除结点后该如何调整平衡二叉树?1、平衡二叉树1.1、什么是二叉搜索树1.2、二叉搜索树的缺点二叉树查找算法查找时间依赖于树的拓扑结构。查找效原创 2020-07-04 17:36:18 · 3880 阅读 · 6 评论 -
算法学习(一)查找算法
文章目录查找1、什么是查找?2、查找算法如何分类3、如何评估查找算法的效率4、具体算法类型及其实现4.1 顺序查找4.2 二分查找4.3 插值查找(优化二分查找)4.4 Fibonacci查找4.5 树表查找4.6 哈希查找4.7 树表查找查找1、什么是查找?一个比较有用的信息就是:查找算法没有稳定性问题、查找算法的设计需要结合特定的数据结构以及一些操作来考虑。2、查找算法如何分类查找算法按照查找表是否有序的情况,可以分为:无序查找:被查找数列有序无序均可;有序查找:被查找数列必须为有序数原创 2020-07-03 11:44:37 · 489 阅读 · 0 评论 -
LeetCode05:最长回文子串(一步一步提高算法效率)
题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”通过次数303,630提交次数982,957来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring著作权归领扣网络所有。商业转载请联系官方授权,非商业转原创 2020-06-29 22:46:52 · 328 阅读 · 0 评论