数据结构与算法
程序媛小菜鸡成长中
这个作者很懒,什么都没留下…
展开
-
11递归---解析案例汉诺塔问题和斐波那契数列
前言 数据结构和算法的最终目标都是降低时间复杂度。 数据结构是从数据组织形式的角度达成这个目标;算法则是从数据处理的角度达成这个目标。 1、什么递归 通俗解释就是某个函数自己调用自己。 递归的两层含义: (1)递归问题必须可以分解为若干个规模较小,与原问题形式相同的子问题,并且这些子问题可以用完全相同的解题思路来解决。 (2)递归问题的演化过程是一个对原问题从大到小进行拆解的过程,并且会有一个明确的终点(临界点)。一旦原问题到达了这个临界点,就不用了再往更小的问题上进行拆解了。最后,从这个临界原创 2021-03-18 09:22:23 · 587 阅读 · 3 评论 -
10哈希表
1、为什么出现哈希表? 之前学习的数据结构:栈、队列、数组、字符串以及树,都侧重于基于索引的查找,在进行数据的数值查找时,往往需要对部分甚至全部数据进行遍历,为了提升基于数据数值的查找,引入了哈希表。 2、哈希表的定义 哈希表又名散列表,是一种特殊的数据结构。 哈希表采用函数映射的设计,将数据的存储位置和数据本身关联起来。这种设计方式能够帮助我们快速定位到想要查找数值的数据(注:不需要进行额外的数值对比)。 公式:地址=f(数值)(f为函数) 3、哈希函数的设计方法 (1)直接定址法原创 2021-03-17 09:52:32 · 181 阅读 · 0 评论 -
力扣59--螺旋矩阵java
题目:给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix。 示例 1: 输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2: 输入:n = 1 输出:[[1]] 提示: 1 <= n <= 20 --------------------------------------------------------------------------------------...原创 2021-03-17 08:53:01 · 132 阅读 · 0 评论 -
树09(主要讲二叉树)
1、树的概念 定义:由边和结点组成,不存在环的一种数据结构。由此可以得出,当剔除根节点后,得到的若干字结构也是树,通常成为子树。 树的高度和深度是一个概念。 2、二叉树 定义:特殊的一种树结构。 特点: (1)每个结点最多有两个子结点,分别称为左节点和右节点。 (2)除叶子结点外,所有结点都有2个子结点的二叉树,称为满二叉树。 (3)完全二叉树:除最后一层外,其它层节点个数都达到最大,并且最后一层的叶子结点都靠左排列。 满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。 3、二叉树的存储方式 (1)基于原创 2021-03-12 16:17:07 · 62 阅读 · 0 评论 -
字符串08
1、字符串是什么 字符串:n个字符组成的有序整体(n≥0)。 2、字符串存储结构 (1)顺序存储。用一组连续的存储单元存储字符序列,一般底层采用定长数组实现。 (2)链式存储。链式存储时,若一个链结点只存储一个字符,很容易造成空间浪费,因此我们考虑每个链结点存放多个字符。具体存放字符数量,与串长度、可占用存储空间及程序实现功能相关。 3、字符串基本操作 (1)新增。与07篇数组相似有两种类型新增。 (2)删除。与07篇数组相似有两种类型删除。 (3)字符串查找考察重点 最常见:子串查找、最大公共子串… .原创 2021-03-11 16:48:07 · 75 阅读 · 0 评论 -
数据结构与算法07---数组
1、数组是什么 (1)数组是数据结构最基本结构,可以看成是线性表推广。 (2)几乎所有编程语言都把数组设置成基础固定的基础变量类型。 2、数组结构 数组在内存中是连续存放,并且存储数据的内存也是连续的,可通过索引值直接存取。 3、数组基本操作 由数组的存储结构可知,数组具有查找遍历,增删困难的特点。 数组新增两种情况: (1)在最后一个元素后添加。此时对原数组没有任何影响(除了长度),因此时间复杂度为O(1)。 (2)在数组中间的位置进行新增操作,此时插入位置中的原数组的数组需要依次后移一位。因为时间复杂度原创 2021-03-11 16:32:12 · 71 阅读 · 0 评论