![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构实现
各个数据结构详解和实现,及与其相关的算法
丨惊蛰丨
这个作者很懒,什么都没留下…
展开
-
动态规划算法技巧
动态规划算法(Dynamic Programing,DP),是一种求解决策过程最优化的问题 一般目的为求最值 核心问题是穷举,将所有可能结果穷举,找到最值 可将问题分为若干个子问题,子问题之间不是相互独立的(分治算法的子问题之间是相互独立的),在穷举时子问题可能会被多次求解,称为重叠子问题 动态规划有最优子结构,通过子问题最值来求解 状态转移方程:问题是如何由子问题推导出来的 动态规划题目的解法一般都可以用下面这三种方法解决 暴力递归法 带备忘录的递归法 非递归的动态规划法 ...原创 2020-08-07 20:05:47 · 230 阅读 · 0 评论 -
字符串匹配问题:KMP匹配算法
基本思想 字符串匹配问题:在文本串中寻找是否有与模式串相同的子串 在字符串匹配时,暴力匹配忽略了如果模式串开头与中间有重复部分,在将模式串的后面的重复部分匹配后,无法继续匹配的话,此时将模式串开头实际上也已经被匹配了,可以直接从开头重复部分之后开始匹配 这里引入了一个部分匹配值表,每个与模式串的字符对应,表示与开头的字符有没有相同的,如果有,表的值就是相同字符的下一位,但只从开头开始对应 算法实现 public static int kmpSearch(String s1,String s2) { /原创 2020-07-13 20:59:15 · 103 阅读 · 0 评论 -
数据结构与算法分析:不相交集类
不相交集类是解决等价问题的一种有效数据结构,实现简单,代码很少,速度快。 基本思想 等价关系 对于任意一对元素a,b∈S,定义关系~ ,使得a~b要么为true要么为false 1.(自反性)对于所有的a∈S,a~a 2.(对称性)a~b当且仅当b ~ a 3.(传递性)若a~b且b ~ c则a ~ c 等价类 :对于元素a∈S,等价类是S的一个子集,包含所有与a有等价关系的元素。S的每个成员恰好在一个等价类中 不相交集:设有N个集合的类,每个集合含有一个不同元素,所有的元素两两不等价,那么这些集合不相交原创 2020-06-29 16:29:12 · 281 阅读 · 0 评论 -
数据结构与算法分析:ArrayList
ArrayList是最基础最简单的数据结构之一原创 2020-06-16 10:28:35 · 80 阅读 · 0 评论 -
数据结构与算法分析:LinkedList
链表是最基础的数据结构之一原创 2020-06-16 10:32:00 · 102 阅读 · 0 评论 -
数据结构与算法分析:二叉查找树
class BinarySearchTree <AnyType extends Comparable<? super AnyType>> { //创建节点类 private static class BinaryNode<AnyType> { //节点三要素:数据、左子树、右子树 AnyType element; BinaryNode<AnyType> left; BinaryNode<AnyType> right;原创 2020-06-16 10:25:26 · 130 阅读 · 0 评论 -
数据结构与算法分析:平衡二叉树(Avl树)
平衡二叉树是数据结构中一种重要的数据结构,同时也是收获offer的路上不可或缺的知识,那么,平衡二叉树是什么呢原创 2020-06-08 21:29:15 · 233 阅读 · 1 评论 -
数据结构与算法分析:哈希表(HashTable)
哈希表(散列),在java中最常见的是使用分离链接法的实现原创 2020-06-16 10:13:50 · 185 阅读 · 0 评论 -
数据结构与算法分析:堆
优先队列又称为堆,而一般说堆指的是二叉堆原创 2020-06-16 10:22:07 · 93 阅读 · 0 评论