随笔分类 - 数据结构和算法
Java 数据结构和算法
摘要:1:题目描述 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2: 输入: nums = [5,7,7,8,8,10], target = 6输出: 0 限制: 0 <= 数组长度 <= 50000 来源:力
阅读全文
摘要:1:含义 如果我们顾名思义的理解,就会产生很多误解!!!这里根本没有动态的思想,最本质的思想就是数列的思想,将上次的计算结果暂存起来,然后根据状态转移表达式,已经不断地后移动,解决原来复杂的问题。详细理解我们参看知乎这位同学的分析,很是到位。 如何理解动态规划? - zhen tan的回答 - 知乎
阅读全文
摘要:1:基本原理 通过,一趟排序将待排序数据分割成两个独立的部分,其中一部分数据比另一部分数据小,则可分别再继续对这两部分继续排序,以达到整个序列有序的目的。 2:具体解释 第一轮: 第二轮: 按照上面逻辑不断迭代,直到全部分割为不能迭代的情况。 3:代码实现 //快速排序算法 public void
阅读全文
摘要:1:算法描述 2:应用举例 2.1:迷宫问题 迷宫问题,是最能体现深度优先搜索的思想情况之一了,我们先分析以下迷宫问题,迷宫如下图; 图2.1.1 首先,我们顶下搜索策略,我们按照左下右上的方法进行搜索。会有以下情况。 图2.1.2 当一直向左,走到最左边的时候,这个时候该位置左上右下所有位置都已经
阅读全文
摘要:1:Dijkstra算法 本算法可以算是贪心算法的实现,通过从起点出发去寻找与其他点的最短距离,找到该最短距离的顶点,然后里该顶点为中转点,去寻找 以中转点出发的到其他顶点更近的距离,从而通过一步步的选择找到最优的路径! 2:算法流程 流程如上图所示,v0到其他顶点的距离设置成一个数组path[0,
阅读全文
摘要:1:图的常用的数据结构 1.1:邻接矩阵 通过数组二维举证的方式来存放图的数据结构,这也是最简单原始的方法来表示图的结构。 所有的顶点数组 node1 node2 node3 node4 node5 以及顶点举证 node1 node2 node3 node4 node5 node1 0 1 0 1
阅读全文
摘要:1:霍夫曼树概念 按照定义;假设右n个权值{w1,w2,...wn},构造一颗带有n个叶子节点的二叉树,每一个叶子节点权值为wk,每个叶子节点的路径长度为lk,其中带权路径长度WPL = w1*l1+w2*l2+w3*l3+...wn*ln,如果该WPL最小则称该二叉树为Huffman树。具体例子往
阅读全文
摘要:1:如何创建完全二叉树? 1.1完全二叉树的基本特性 1:n0和n2之间的关系:n0即为子节点为0的节点个数,n1即为子节点为1的节点个数,n2即为子节点为2的节点个数.很显然,总节点个数n = n0 + n1 + n2 等式1,然后我们找第二个等式,我们发现,树中所有连接线的个数为n-1,这是因为
阅读全文
摘要:1:简单匹配算法 算法思路: 先在源字符串S中第一个位置开始匹配,依次与目标字符串T的字符进行判断。 如果遇到到不同,则退出本次匹配,再将S中匹配起始位置+1,然后重复。 直到T的字符全部匹配完毕,则认为找到一个字符串。 算法流程: 初始化字符串和起始位置 i = 0;j = 0 S字符串循环 在循
阅读全文
摘要:1:希尔排序原理分析 希尔排序解决的问题是:针对{8,7,9,4,5,0,2,6,3,1}进行插入排序时,由于较小的数在序列的后面,所以在插入排序时,会出现多次移动覆盖的情况,这正是由于较小数在后面造成的。所以我们要一定的优化处理,可以有效避免这种情况的发生!希尔排序d额操作如下图所示; 假设有10
阅读全文
摘要:1:基本思想 插入排序属于内部排序,将欲排序的元素以插入的方式来寻找该元素的适当位置,以达到排序的目的。 排序思想介绍:将n个待排序的元素,看成一个有序表和无序表的形式,最开始阶段有序表阶段只包含一个元素,无序表包含n-1个元素,排序过程每次从无序表中取出第一个元素,把他排序码依次与有序元素排序码进
阅读全文
摘要:1:哈希表的概念 2:设计原理 3:哈希表的Java设计 package hashTable; import java.util.HashMap; /** * @author :dazhu * @date :Created in 2020/3/20 15:21 * @description:哈希表的
阅读全文
摘要:1:基本介绍 1.1:概念 在待排序的数据内,按照一定的规则找到最大或者最小的数据,然后交换到指定的位置,在不断缩小待排序数据的范围直到结束为止。 1.2:步骤 2:代码实现 package sort; public class SelectSortTest { public static void
阅读全文
摘要:1:概念 就是对待排序的序列,从前往后的依次比较相邻的数据之间的大小关系,如果满足排序则交换位置,这样子每一次排序就找到当前的最大值放在最边上!优化设计:若有一次排序中,没有任何数据进行交换!则可以设置标志位,代码此序列已经是有序的了,不用再继续比较,从而进行优化! 2:设计思想 经过冒泡算法的定义
阅读全文
摘要:1:概念 T(n)被称为时间复杂度,一般为在某个算法中操作步骤的重复次数与问题规模n的关系,下面一一举例说明 2:具体说明 2.1:常数阶o(1) 无论代码有多少行,只要没有循环等复杂的结构,其算法时间复杂度就是1为常数,如 int i =1; in j = 0; i++; j--; //该代码没有
阅读全文
摘要:1:Stack特点 stack:栈,是一种特殊的数据结构,有着先入后出的特点(first in last out)。stack中栈底始终不变,只有一端能变化。栈顶在有数据push的时候增大,有数据pop的时候减小!相比于队列Queue而言,队列是先进先出(first in first out),队列
阅读全文
摘要:1:双向链表的概念和优缺点 概念 每一个node都包含指向下一个node的引用Next,以及指向前一个node的Pre。这样说就可以双向的遍历链表!不想单向列表只能从前往后的遍历。 优缺点 1:支持双向查找,相比而言更快,但是每个节点多了,一个指向前节点的引用。 2:不需要temp节点缓存当前节点的
阅读全文

浙公网安备 33010602011771号