
数据结构
文章平均质量分 92
小成星际
这个作者很懒,什么都没留下…
展开
-
Python ACM模式
Python ACM模式import sys# 这里写解决问题的代码,和LeetCode就完全一样了def solve(arr): sum = 0 for i in range(len(arr)): sum += arr[i] return sumif __name__ == '__main__': # 接收输入的逻辑,这里先把输入接收过来, 两种选择input()和sys.stdin.readline() group_nums = i原创 2021-10-03 16:52:50 · 6232 阅读 · 0 评论 -
算法总结——单调栈
算法总结——单调栈一、每日温度Python版本二、下一个更大元素 IPython版本下一个更大元素IIPython版本接雨水双指针解法动态规划解法单调栈解法Python双指针法五、柱状图中最大的矩形本文是在阅读微信公众号《代码随想录》后进行改写学习的一、每日温度leecode 739. 每日温度请根据每日气温列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [7原创 2021-09-03 22:22:07 · 501 阅读 · 0 评论 -
算法总结——栈与队列
算法总结——栈与队列一、栈与队列理论基础用栈实现队列Python版本三、用队列实现栈Python版本四、有效的括号Python版本五、删除字符串中的所有相邻重复项Python版本六、逆波兰表达式求值Python七、滑动窗口最大值Python版本八、前 K 个高频元素思路Python版本本文是在阅读微信公众号《代码随想录》后进行改写学习的一、栈与队列理论基础队列是先进先出,栈是先进后出那么我这里在列出四个关于栈的问题,大家可以思考一下。以下是以C++为例,相信使用其他编程语言的同学也对应思考一下,自原创 2021-09-03 21:44:34 · 484 阅读 · 0 评论 -
算法总结——双指针法
算法总结——双指针法一、移除元素暴力解法双指针法相关题目推荐Python版本二、反转字符串Python版本三、替换空格Python版本四、 翻转字符串里的单词Python版本五、反转链表双指针法递归法Python迭代法Python递归法六、删除链表的倒数第N个节点Python版本七、链表相交Python版本八、环形链表IIPython版本九、三数之和哈希解法双指针Python版本十、四数之和Python版本本文是在阅读微信公众号《代码随想录》后进行改写学习的一、移除元素leecode 27. 移除元素原创 2021-09-03 19:09:10 · 292 阅读 · 0 评论 -
算法总结——字符串
算法总结——字符串一、反转字符串Python版本二、反转字符串IIPython版本三、替换空格Python 版本四、翻转字符串里的单词Python版本五、左旋转字符串Python版本六、实现 strStr()什么是KMPKMP有什么用什么是前缀表最长公共前后缀?为什么一定要用前缀表如何计算前缀表前缀表与next数组使用next数组来匹配时间复杂度分析构造next数组使用next数组来做匹配前缀表(不减一)C++实现Python七、重复的子字符串本文是在阅读微信公众号《代码随想录》后进行改写学习的一、反转原创 2021-09-03 18:09:20 · 679 阅读 · 0 评论 -
算法总结——哈希表
算法总结——哈希表一、哈希表哈希函数哈希碰撞线性探测法常见的三种哈希结构二、有效的字母异位词Python版本一Python写法二(没有使用数组作为哈希表,只是介绍defaultdict这样一种解题思路)相关题目三、两个数组的交集拓展Python版本相关题目四、快乐数Python版本五、两数之和Python版本六、四数相加IIPython版本七、赎金信暴力解法哈希解法Python写法一(使用数组作为哈希表)Python写法二(使用defaultdict)Python写法三八、三数之和哈希解法双指针Python原创 2021-09-02 17:00:55 · 530 阅读 · 0 评论 -
算法总结——链表篇
算法总结——链表篇一、链表理论基础链表的类型单链表双链表循环链表链表的存储方式链表的定义链表的操作删除节点添加节点性能分析二、 移除链表元素Python版本三、设计链表Python版本四、反转链表双指针法递归法Python迭代法Python递归法五、两两交换链表中的节点Python版本六、删除链表的倒数第N个节点Python版本七、链表相交Python版本八、环形链表IIPython版本九、总结链表的理论基础虚拟头结点链表的基本操作反转链表删除倒数第N个节点链表相交环形链表本文是在阅读微信公众号《代码随想原创 2021-09-02 14:01:12 · 836 阅读 · 0 评论 -
算法总结——数组篇
算法总结——数组篇一、数组二、二分查找二分法第一种写法二分法第二种写法相关题目推荐Python版本1(左闭右闭)Python版本2(左闭右开)三、移除元素暴力解法双指针法相关题目推荐Python版本四、有序数组的平方暴力排序双指针法Python版本五、长度最小的子数组暴力解法滑动窗口相关题目推荐Python版本六、螺旋矩阵II类似题目Python版本总结数组理论基础数组的经典题目二分法双指针法滑动窗口模拟行为一、数组数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到原创 2021-09-01 20:36:59 · 933 阅读 · 0 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第10章 内部排序
数据结构(C语言版)严蔚敏 吴伟民 编著 第10章 内部排序10.1 概述10.2 插入排序10.2.1 直接插入排序10.2.2 其他插入排序10.1 概述排序是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。从第9章讨论中可以看出,通常希望计算机中的表是按关键字有序的。因为有序的顺序表可以采用效率更高的折半查找法,其平均查找长度为log2(n+1)-1,而无序的顺序表只能进行顺序查找,其平均查找长度为(n+1)/2。又如建造树表(无论是二叉排序树或B-树)的过程本身就是一个排序原创 2021-03-02 17:02:58 · 897 阅读 · 1 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第9章 查找
数据结构(C语言版)严蔚敏 吴伟民 编著 第9章 查找前言9.1 静态查找表9.1.1 顺序表的查找9.1.2 有序表的查找9.1.3 静态树表的查找9.1.4 索引顺序表的查找9.2 动态查找表9.2.1 二叉排序树和平衡二叉树前言本书在第2章和第7章已经介绍了各种线性和非线性的数据结构,在这一章将讨论另一种在实际应用中大量使用的数据结构——查找表。查找表是由同一类型的数据元素(或记录)构成的集合。由于集合中的数据元素之间存在着完全松散的关系,因此查找表是一个非常灵便的数据结构。对查找表经常进行的原创 2021-02-28 17:16:42 · 788 阅读 · 0 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第7章 图
数据结构(C语言版)严蔚敏 吴伟民 编著 第7章 图前言7.1 图的定义和术语7.2 图的存储结构7.2.1 数组表示法前言在图形结构中,结点之间的关系可以是任意的,图中任意两个元素之间都可能相关。由此,图的应用极为广泛,已渗入到诸如语言学、逻辑学、物理、化学、电讯工程、计算机科学以及数学的其他分支中。7.1 图的定义和术语在图中的数据元素通常称为顶点,V是顶点的有穷非空集合,VR是两个顶点之间的关系的集合。若<v,w>∈VR,则<v,w>表示从v到w的一条弧,且称v为弧尾或原创 2021-02-24 16:57:29 · 775 阅读 · 1 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第6章 树和二叉树
数据结构(C语言版)严蔚敏 吴伟民 编著 第6章 树和二叉树前言6.1 树的定义和基本术语二、使用步骤前言树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用,直观看来,树是以分支关系定义的层次结构。树在计算机领域中也得到广泛应用,如在编译程序中,可用树来表示源程序的语法结构。又如在数据库系统中,树形结构也是信息的重要组织形式之一。本章重点讨论二叉树的存储结构及其各种操作,并研究数和森林与二叉树的转换关系。6.1 树的定义和基本术语树是n(n≥0)个结点的有限集。在任意一棵非空树中:(1)原创 2021-02-19 20:43:41 · 715 阅读 · 0 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第5章 数组和广义表
数据结构(C语言版)严蔚敏 吴伟民 编著 第5章 数组和广义表前言5.1 数组的定义5.2 数组的顺序表示和实现5.3 矩阵的压缩存储5.3.1 特殊矩阵5.3.2 稀疏矩阵5.4 广义表的定义5.5 广义表的存储结构前言前几章讨论的线性结构中的数据元素都是非结构的原子类型,元素的值是不再分解的。本章讨论的两种数据结构——数组和广义表可以看成是线性表在下述含义上的扩展:表中的数据元素本身也是一个数据结构。5.1 数组的定义类似于线性表,抽象数据类型数组可形式化定义为:ADT Array{ 数据原创 2021-02-18 21:37:20 · 1231 阅读 · 1 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第4章 串
数据结构(C语言版)严蔚敏 吴伟民 编著 第4章 串前言4.1 串类型的定义前言计算机上的非数值处理的对象基本上是字符串数据。在较早的程序设计语言中,字符串是作为输入和输出的常量出现的。随着语言加工程序的发展,产生了字符串处理。这样,字符串也就作为一种变量类型出现在越来越多的程序设计语言中,同时也产生了一系列字符串的操作。字符串一般简称为串。在汇编和语言的编译程序中,源程序及目标程序都是字符串数据。在事务处理程序中,顾客的姓名和地址以及货物的名称、产地和规格等一般也是作为字符串处理的。又如信息检索系统、原创 2021-02-17 22:20:47 · 869 阅读 · 0 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第3章 栈和队列
数据结构(C语言版)严蔚敏 吴伟民 编著 第3章 栈和队列前言3.1 栈3.1.1 抽象数据类型栈的定义3.1.2 栈的表示和实现3.2 栈的应用举例3.2.1 数制转换3.2.2 括号匹配的检验3.2.3 行编辑程序3.2.4 迷宫求解3.2.5 表达式求值3.3 栈与递归的实现3.4 队列3.4.1 抽象数据类型队列的定义3.4.2 链队列——队列的链式表示和实现3.4.3 循环队列——队列的顺序表示和实现前言栈和队列是两种重要的线性结构,从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的原创 2021-02-17 16:50:20 · 621 阅读 · 0 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第2章 线性表
数据结构(C语言版)严蔚敏 吴伟民 编著 第2章 线性表前言2.1 线性表的类型定义2.2 线性表的顺序表示和实现2.3 线性表的链式表示和实现2.3.1 线性链表2.3.2 循环链表2.3.3 双向链表2.4 一元多项式的表示和相加前言从第2章到第4章将讨论线性结构,线性结构的特点:是在数据元素的非空有限集合中存在唯一的一个被称作“第一个”的数据元素存在唯一的一个被称作“最后一个”的数据元素除第一个外,集合中的每个数据元素均只有一个前驱除最后一个外,集合中的每个数据元素均只有一个后继2.原创 2021-02-16 22:31:29 · 880 阅读 · 0 评论 -
数据结构(C语言版)严蔚敏 吴伟民 编著 第1章 绪论
数据结构(C语言版)严蔚敏 吴伟民 编著 第1章 绪论1.1 什么是数据结构?1.2 基本概念和术语1.3 抽象数据类型的表示与实现1.1 什么是数据结构?用计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编出程序,进行调试,调整直至得到最终解答。寻找数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。描述这类非数值问题的数学模型不再是数学方程,而是诸如表、树和图之类的原创 2021-02-12 13:12:57 · 1053 阅读 · 2 评论