数据结构
文章平均质量分 62
写代码的信哥
这个作者很懒,什么都没留下…
展开
-
回溯算法2
回溯算法的题目:电话号码字母组合,回文子串分割,重构Ip编码,子集问题原创 2022-07-22 21:28:21 · 250 阅读 · 0 评论 -
前缀树基本原理与26字符前缀树代码
建立一个前缀树,将字符串按照顺序连接成一棵前缀树。前缀树的每一个节点,都有一个path值表示通过了几次,end值表示在这个节点结束了几次。每一个节点可以产生下一级节点next,next是一个26位的数组,这是对于字符串是26个英文字母的情况。...原创 2022-07-21 14:41:53 · 338 阅读 · 1 评论 -
KMP算法与leetcode28题
介绍了什么是KMP,可以解决什么问题。分析了KMP算法里的next数组,知道了next数组就是前缀表。接着一步一步推导出了前缀表,分析了KMP算法的时间复杂度。原创 2022-07-20 22:14:51 · 497 阅读 · 0 评论 -
回溯算法的基本原理与组合问题
递归与回溯是相辅相成的,回溯函数就是递归的回溯。回溯算法是一个纯暴力的方法,可以通过剪枝的方法提高一些效率,但是仍然还是穷举的本质。原创 2022-07-16 01:03:19 · 276 阅读 · 0 评论 -
折纸痕迹的规律_模拟二叉树
用递归的方法模拟二叉树实现纸张折痕规律输出原创 2022-07-05 10:42:34 · 352 阅读 · 0 评论 -
二叉树_题目笔记
最低公共祖先、后继节点、二叉树的序列化和反序列化原创 2022-07-04 22:15:52 · 146 阅读 · 0 评论 -
二叉树的经典题目
判断二叉树是否是搜索二叉树,平衡二叉树,满二叉树,完全二叉树原创 2022-06-30 11:29:14 · 266 阅读 · 0 评论 -
二叉树的基础知识与遍历
对二叉树基础的复习,然后总结了遍历原创 2022-06-29 18:24:18 · 154 阅读 · 0 评论 -
哈希表_三数之和的两种解法
哈希表题目练习原创 2022-06-25 21:09:24 · 229 阅读 · 0 评论 -
哈希表_两个数组的交集与两数之和与四数相加
哈希表的题目代码原创 2022-06-25 19:13:40 · 73 阅读 · 0 评论 -
哈希表_判断是否移位字符和赎金信
力扣题目链接LeetCode242给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。原创 2022-06-16 19:15:20 · 43 阅读 · 0 评论 -
哈希表_基础理论与员工表实例
哈希表(Hash table)哈希表一般都是用来判断一个元素是否出现在集合里。要枚举的话,时间复杂度是O(n),用哈希表可以做到O(1)查询。通过hashCode把要存储的内容转换为数值,通过特定编码方式,将其他数据格式转化为不同的数值,就可以把存储内容映射到哈希表上的索引数字。实现了一个哈希表的实例,提供了代码。...原创 2022-06-16 16:11:19 · 113 阅读 · 0 评论 -
链表_链表相交与环形入口
两道链表的题目,以后继续补充原创 2022-06-16 09:40:10 · 77 阅读 · 0 评论 -
链表_两两交换链表中的节点
链表的简单题目思路原创 2022-06-13 11:04:02 · 295 阅读 · 0 评论 -
链表_删除链表的倒数第n个节点
链表的简单题目,删除倒数第n个节点原创 2022-06-15 20:26:28 · 204 阅读 · 0 评论 -
二叉树的结构和遍历
二叉树二叉树节点结构class Node<V>{V value;Node left;Node right;}遍历二叉树用递归和非递归两种方式实现二叉树的先序、 中序、 后序遍历递归序先序遍历:对每一棵子树都先打印头,再打印左右。第一次来到的时候打印,第二次第三次来到都不打印。public static void preOrderRecur(Node head) { if (head == null) { return; } System.ou原创 2021-11-05 20:42:35 · 57 阅读 · 0 评论 -
二叉树的相关题目
二叉树的相关题目二叉树的相关概念及其实现判断如何判断一棵树是否是搜索二叉树?搜索二叉树原创 2021-11-12 22:23:27 · 582 阅读 · 0 评论 -
堆排序和桶排序
桶排序以及排序内容总结堆堆结构就是用数组实现的完全二叉树结构什么是完全二叉树结构?从左到右依次遍满的就是完全二叉树结构。满足此结构,那么i结点的左孩子为2×i+1,右孩子为2×i+2。父节点为 (i-1)/2.堆是特殊的完全二叉树完全二叉树中如果每棵子树的最大值都在顶部就是大树根完全二叉树中如果每棵子树的最小值都在顶部就是小树根堆结构的heapInsert与heapify操作堆结构的增大和减小优先级队列结构,就是堆结构堆排序大根堆,父结点不能比子节点小。将最大值的顶结点去原创 2021-11-03 10:28:09 · 318 阅读 · 0 评论 -
排序算法的稳定性及汇总
排序算法的稳定性及汇总稳定性稳定性是值,相同的值是否能做到相对顺序维持下来,仍然不变。如果对于基础类型数组的排序,这个稳定性并没什么用。但是对于两个字段的情况排序,就需要具备稳定性。比如在按照班级排序的情况,也按照年龄排序。 (通过比较器实现)各排序算法情况做到稳定性的冒泡排序,具有稳定性。相等的时候不交换,即可做到。插入排序,在往前看的过程中,相等的时候不插就可以做到。归并排序,可以做到稳定性。merge的时候,遇到相等的先拷贝左边的即可做到。其中小和问题就失去了稳定性,因为采用了先拷原创 2021-11-03 11:33:00 · 272 阅读 · 0 评论 -
链表算法与常见例题
链表简单介绍哈希表哈希表在使用层面上可以理解为一种集合结构如果只有key,没有伴随数据value,可以使用HashSet结构(在C++中叫UnOrderedSet)如果既有key,又有伴随数据value,可以使用HashMap结构(在C++中叫UnOrderedMap)有无伴随数据value,是HashMap和HashSet的唯一区别,底层的实际结构是一回事使用哈希表增(put)、删(remove)、改(put)、查(get)的操作,可以认为时间复杂度为O(1),但是常数时间比较大放入哈希原创 2021-11-04 11:51:25 · 131 阅读 · 0 评论 -
时间复杂度为O(NlogN)的排序
认识时间复杂度为O(NlogN)的排序剖析递归行为和递归行为时间复杂度的估算用递归方法找一个数组中的最大值,系统上是怎么做的?求中点的时候一般不使用(L+R)/2,防止溢出。public class Code08_GetMax { public static int getMax(int[] arr){ return process(arr, 0 , arr.length -1); } public static int process(int[] arr原创 2021-10-29 16:10:17 · 401 阅读 · 0 评论 -
2021-10-23认识复杂度和简单排序
认识复杂度和简单排序常数时间操作一个操作如果和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度O(N2)两个算法都是O(N)的时候,也就是时间复杂度指标一样的时候,根据常数项来判断优劣。 分析实际运行时间来判断。排序算法选择排序package li.sort;import java.util.Arrays;public class Code01_SelectionSort { public static void main(String[]原创 2021-10-23 16:08:30 · 191 阅读 · 0 评论