
数据结构
文章平均质量分 59
落春只在无意间
不能打败我的只会让我更强大
展开
-
快乐数(双指针,哈希表)
快乐数方法一:用哈希表来记录方法二、双指针原创 2021-08-21 13:19:16 · 260 阅读 · 0 评论 -
颜色分类(双指针)
题目:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。方法:双指针思路:用两个指针p0,p1,初始均置为0.用来标记放置0与1的位置。一次遍历,1、遇到1的话i位置对应的值就与p1位置对应的值交换,p1++;2、遇到0就与p0位置交换。但注意的是如果p0<p1,因为p0所在的位置一定不是0,所以如果交换后就会将1拿出去,所以需要将i位置与p1原创 2021-08-19 22:12:54 · 207 阅读 · 0 评论 -
【合并区间】排序 + 双指针
题目:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。难点:给的区间的大小次序是乱的。第一次:思路:如果当前区间的左端点在数组 merged 中最后一个区间的右端点之后,那么它们不会重合,我们可以直接将这个区间加入数组 merged 的末尾;否则,它们重合,我们需要用当前区间的右端点更新数组 merged 中最后一个区间的右端点,将其原创 2021-08-19 22:11:14 · 180 阅读 · 0 评论 -
螺旋矩阵(逆时针)
**题目描述:**给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。方法一:按层遍历(这个层是一圈一圈的)思路:对于每层,从左上方开始以顺时针的顺序填入所有元素。假设当前层的左上角位于(top,left),右下角位于(bottom,right),按照如下顺序填入当前层的元素。从左到右填入上侧元素,依次为(top,left) 到 (top,right)。从上到下填入右侧元素,依次为 (top+1,right) 到 (原创 2021-08-20 15:05:52 · 2284 阅读 · 0 评论 -
高阶数据结构
高阶数据结构并查集“边代权的并查集”带“扩展域”的并查集树状数组查询前缀和单点增加树状数组求逆序对树状数组的扩展应用区间修改和区间查询线段树区间最大连续子段和扫描线分块原创 2022-01-12 11:05:39 · 640 阅读 · 0 评论 -
数据结构期末复习笔记(NEU版)
数据结构期末复习笔记绪论数据结构的分类数据结构研究的内容算法的重要特性算法的设计要求题目汇总线性表栈和队列栈队列题目树二叉树二叉树的遍历线索二叉树线索二叉树的查找查找静态查找表顺序查找二分查找(折半查找)分块查找动态查找表二叉排序树删除操作平衡二叉树哈希表1、开放地址法2、链地址法3、散列表查找成功和失败的平均查找长度排序为什么将排序分为插入、选择、交换等几大类排序算法的稳定性排序中的常考点原创 2021-12-01 09:44:59 · 1551 阅读 · 0 评论 -
基本数据结构篇(三万字总结)
数据结构栈编辑器(对顶栈)火车进栈火车进栈问题(卡特兰数)大数相乘分解质因数阶乘分解质因数压位配套的高精度除法队列小组队列蚯蚓双端队列最大子序和(单调队列)哈希雪花雪花雪花(序列的最小表示)兔子与兔子回文子串的最大长度KMP周期(next 数组的性质)Trie前缀统计最大异或对最长异或值路径二叉堆序列数据备份合并果子 (二叉哈夫曼树)荷马史诗(k叉哈夫曼树)小结小知识点解题思路由数据范围反推算法复杂度以及算法内容原创 2021-11-15 09:53:50 · 578 阅读 · 0 评论 -
数据结构笔记
数据结构笔记平衡二叉树(ALV树)基本概念平衡二叉树的构造方法LL型RR型LR型RL型折半查找在成功和失败下的平均查找长度AOE网中求关键路径各顶点最早发生的时间各顶点最晚发生的时间原创 2021-11-07 16:27:43 · 580 阅读 · 0 评论 -
数据结构----数组与广义表专题
数组与广义表专题数组的顺序表示和实现前言数组中任意一个元素存储地址的计算一维数组二维数组更一般的二维数组矩阵的压缩存储前言对称矩阵三角矩阵前言上三角对应关系下三角关系三对角矩阵下标对应关系稀疏矩阵前言稀疏矩阵的三元组表示用三元组表示矩阵的转置优化快速转置原创 2021-09-08 18:25:40 · 777 阅读 · 0 评论 -
线性表的应用之多项式的表示与相加
多项式的表示与相加一元多项式的表示一元多项式的建立一元多项式相加一元多项式的打印完整代码原创 2021-09-02 15:40:27 · 186 阅读 · 0 评论 -
c语言建立线性表(顺序储存,链式储存,循环,双向)全
c语言建立线性表顺序储存储存结构初始化(建立)顺序表查找操作一、按值查找,找到返回对应的下标二、按照下标返回元素插入操作一、在线性表尾部添加元素二、在位置i处插入元素三、顺序表(有序)插入,(如都是由小到大)删除操作一、删除位置i的元素,删除成功后,返回删除的值二、删除值为val的第一个元素,没有返回-1三、在非递减有序的有序表中删除多余的相同元素其余操作一、将线性表中的所有元素转置二、两个有序的顺序表合并后任然有序完整代码链式储存存储结构建立链表一、尾插法建立原创 2021-09-02 13:32:00 · 12442 阅读 · 5 评论 -
大数相乘(c语言/c++)
大数相乘(c语言/c++)方法一:做加法方法二、做乘法原创 2021-08-25 13:18:52 · 938 阅读 · 0 评论 -
邻接表建立图(c语言)
邻接表建立图有向图无向图不得不说网上的真的是太乱了,看得我脑壳疼自己写的可以,感觉好的话可以当成模板。有向图代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<stack>using namespace std;#define maxn 200int v, e;//表结点typedef struct _Enode{ int ivex; //该边所指向原创 2021-08-24 18:08:41 · 1279 阅读 · 4 评论 -
最长回文串
题目描述:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:“abccccdd”输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。思路:我们用哈希表(映射都可以)记录下每个字符出现的次数。然后有以下几种情况:如果个数为偶数,因为偶数可以拆到两边,所以直接加上偶数个数即可。奇数,如果字符个数为奇原创 2021-08-23 19:24:43 · 1517 阅读 · 0 评论 -
字符串相加/大数相加(代码极短)
字符串相加(思路新奇,代码极短)题目描述:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。原创 2021-08-23 18:50:52 · 263 阅读 · 0 评论 -
稀疏矩阵快速转置c语言代码(详解)
通过下列代码解释:这么说吧,刚开始我也不是很理解。在经过一段时间研究后才枉然大悟。1.首先说下,在以三元组表的形式存矩阵元素时。如果是以行向量来存的话,在输入与输出时,同一行中的数据,列不一定按顺序来。但行必须从上到下。2.所以按照上面的规则,如果按一般思路,之所以不能直接行,列交换是因为直接交换后,行的顺序一般是乱的,在输出时就没有办法输出正确的矩阵。所以一般方法就得从第一列一直遍历到最后一列,每一列都要遍历全部来保证顺序。3.而在快速转置的方法中 cpot【】保存的是正确的行序,所以可以直接行,原创 2021-07-06 20:49:56 · 2403 阅读 · 2 评论 -
单链表逆序
思路要通过迭代的方法,一个一个将结点脱离出链表再建立关系。如有这样一个链表:第一步首先要将head指向的第一个结点从链表中分离出:实现的伪代码是:head->next=NULL; next=p->next; //存下p的下一个结点,以便可以迭代p->next=head->next; //将第一个结点分离出来head->next=p; //p=next; //将p往后移第二部第三步再这一步可以看都迭代结束的标识是p==NULL;实原创 2021-06-29 13:13:30 · 143 阅读 · 0 评论