数据结构与算法
文章平均质量分 64
Little BigUs
人生最大的悲哀,就是做了一辈子自己不喜欢的事情
展开
-
C++优先队列易错点
C++优先队列易错点原创 2022-12-13 10:47:54 · 196 阅读 · 0 评论 -
以邻接矩阵形式创建图(C语言)
以邻接矩阵形式创建图(C语言)原创 2022-08-12 20:06:02 · 546 阅读 · 0 评论 -
使用邻接表实现图的创建以及深度遍历、广度遍历、dijkstra算法(C语言)
C语言使用邻接表实现图的创建以及深度遍历、广度遍历、dijkstra算法原创 2022-08-12 20:03:58 · 535 阅读 · 0 评论 -
C语言实现几种常见的排序算法
选择排序,冒泡排序,直接插入排序,折半插入排序,归并排序,快速排序原创 2022-08-12 19:59:45 · 451 阅读 · 0 评论 -
720. 词典中最长的单词
720. 词典中最长的单词一、题目描述给出一个字符串数组 words 组成的一本英语词典。返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。示例 1:输入:words = ["w","wo","wor","worl", "world"]输出:"world"解释: 单词"world"可由"w", "wo", "wor", 和 "worl"逐步添加一个字母组成。示例 2原创 2022-03-17 22:55:32 · 229 阅读 · 0 评论 -
使用栈实现简单计算器
栈实现简单的计算器描述:输入一串字符串,输出它的计算结果。//考虑输入不正确的情况例如输入:722-5+1-5+3-4 输出18代码如下:public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); Stack<Character> stack2 = new Stack<原创 2022-03-13 10:41:16 · 2719 阅读 · 0 评论 -
最大递增子序列和最大子数组问题
最长递增子序列一、题目描述输入一个无序数组,找到其中最长递增子序列的长度。(子序列和子串的区别,子串一定是连续的,子序列不一定是连续的)二、解题思路定义一个一维数组dp,dp[i]代表前i个元素中的最长递增子序列。初始状态dp[0] = 1状态转移方程:已知dp[0]怎么求dp[1]?看1处的值是不是比0处的值大,如果大且 dp[1] < dp[0] + 1,dp[1] = dp[0] + 1,否则dp[1] = 1已知dp[0] 和dp[1] 怎么求dp[2]?看2处的值是不是比原创 2022-03-10 20:30:15 · 186 阅读 · 0 评论 -
常用的10种算法(8~10)
迪杰斯特拉(Dijkstra)算法弗洛伊德算法马踏棋盘算法原创 2022-02-25 20:24:13 · 617 阅读 · 0 评论 -
常用的10种算法(4~7)
常用的10种算法(4~7)KMP算法应用场景:字符串匹配问题字符串匹配问题:有一个字符串str1 = “BBC ABCDAB ABCDABCDABDE”和 str2 = “ABCDABD”现在要判断str1 是否含有 str2 ,如果存在,就返回第一次出现的位置,如果没有则返回 -1。KMP算法介绍KMP算法是解决模式串是否在文本串中出现过,如果出现过,返回最早出现的位置的算法。KMP是以三个人的姓氏命名的KMP算法利用之前判断过的信息,通过一个next数组,保存模式串中签后最长公共原创 2022-02-22 21:30:06 · 451 阅读 · 0 评论 -
常用的10种算法(1~3)
常用的10种算法(1~3)二分查找算法(非递归)思路分析:从一个单调递增的数组中找到目标元素,要求使用二分查找非递归思想public int binarySearch(int[] arr, int target) { int left = 0, right = arr.length-1, mid = -1; while(left <= right) { mid = (left + right)/2; if(arr[m原创 2022-02-22 21:27:55 · 364 阅读 · 0 评论 -
图结构的简单了解
图为什么要有图?前面学习了线性表和树线性表局限于一个直接前驱和一个直接后继的关系。树也只能有一个直接前驱也就是父节点。当我们需要表示多对多的关系时,我们需要用到图。图是一种数据结构,图的构成元素是 顶点(vertex) 和 边(edge)。图的表示方式二维数组(邻接矩阵)链表(邻接表)所谓图的遍历,即对节点的访问,一个图有那么多个节点,需要特定的策略,一般有两种访问策略:深度优先遍历广度优先遍历图的深度优先遍历介绍深度优先(Depth First Search)DFS原创 2022-01-16 23:15:14 · 328 阅读 · 0 评论 -
多路查找树
多路查找树将讲多路查找树之前先讲一下二叉树和B树的关系。二叉树的操作效率较高,但也存在问题。加入二叉树的节点数量很多的时候会存在以下问题:构建二叉树时需要多次进行I/O操作。查找时效率降低解决方法 : 多叉树在二叉树中,每个节点有数据项和最多两个子节点,如果允许每个节点有更多的数据项和子节点,就是多叉树。后面讲解的2-3树,2-3-4树就是多叉树,多叉树通过重新组织节点,减少树的高度,能对二叉树进行优化。例如上面就是一棵2-3树,有三个子节点的就是3节点,两个子节点的就是2节点所原创 2022-01-16 21:09:46 · 324 阅读 · 0 评论 -
平衡二叉树及其创建(C语言)
平衡二叉树的介绍以及使用C语言创建平衡二叉树原创 2022-01-16 21:05:43 · 948 阅读 · 1 评论 -
学习记录------树
数据结构与算法 ------- 树主要介绍了线索二叉树树与 数组和 链表一样都是一种数据结构数组 : 便于查询,但是插入与删除很麻烦链表:插入和删除很方便,但是查询很麻烦,树:插入删除和查询都有较高的效率前序遍历,中序遍历和后序遍历都很简单树的创建 : 有节点类和树类,一棵树是由多个节点组从且只有一个根节点,所以在树中要设置根节点。顺序存储二叉树:概念 : 数组存储方式和数据存储方式可以相互转化,即数组可以转换成树,树也可以转换成数组。特点:通常只考虑完全二叉树 (注意完全二原创 2021-12-19 22:52:03 · 439 阅读 · 0 评论