随笔分类 -  数据结构与算法

1
摘要:1、找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 1、数组中重复的数字 ① class Solution { public: //使用s 阅读全文
posted @ 2020-12-01 00:13 肥斯大只仔 阅读(103) 评论(0) 推荐(0)
摘要:总结 什么是平衡二叉树: 基于二叉排序树 左右子树的深度之差的绝对值不超过1 左右子树都是平衡二叉树 为什么要修改二叉排序树为平衡二叉树:因为查找二叉树的比较次数和层数有关 在构造二叉排序树的过程中,会出现四种失衡现象 如何进行调整:找到最小不平衡子树,将其调平衡 最小不平衡子树:离插入节点最近且平 阅读全文
posted @ 2020-10-16 01:45 肥斯大只仔 阅读(469) 评论(0) 推荐(0)
摘要:什么是散列表 用于查找,通过对元素关键字key进行某种运算,直接求出元素的地址,就可以直接访问到元素了,无需像基于线性表、树结构的查找进行多次比较 散列函数、散列地址:散列地址p=H(key),H为散列函数 散列表:简单理解就是一个一维数组,散列地址就是数组的下标 冲突、同义词:H(key1)=H( 阅读全文
posted @ 2020-10-14 09:45 肥斯大只仔 阅读(286) 评论(0) 推荐(0)
摘要:思路 什么是堆 ①一棵完全二叉树,所以能用数组表示 ②堆顶为最大或最小(大根堆,小根堆),除了堆顶,堆里的元素没有用 ③左孩子右孩子都是堆 堆排序分两步 ①建堆 以原数组为空间建堆(代码选用着这种) 新建空间建堆 两种方法建立起来的堆不一样 ②调整堆 因为一个堆有用的就是堆顶元素,当我们取出堆顶元素 阅读全文
posted @ 2020-10-13 17:01 肥斯大只仔 阅读(105) 评论(0) 推荐(0)
摘要:思路总结 先将n个记录两两分组 若n为奇数也没关系,1个记录的组不需要进行比较,回到递归上一层会进行3个记录的merge 分组完成后,进行两两合并merge,merge中进行排序 因为两个需要合并的数组都是有序的,所以不需要O(nlogn)的排序方法,进行O(n)的比较排序即可 merge中需要辅助 阅读全文
posted @ 2020-10-13 11:34 肥斯大只仔 阅读(201) 评论(0) 推荐(0)
摘要:算法思路 每次都确定一个元素的最后位置,同时这个位置左边的数都是比它小,右边的数都是比它大 挖坑思路: 两个指针,一个left,一个right 每次大循环选一个枢轴pivotkey(选最左边的,其实选什么都没关系),相当于挖了一个坑 我们要从右边找到一个比v[pivotkey]小的元素,填上这个坑 阅读全文
posted @ 2020-10-12 21:56 肥斯大只仔 阅读(173) 评论(0) 推荐(0)
摘要:总结分析 是一个简单的dp 像迪杰斯特拉算法,不断对两个结点之间的距离进行松弛 松弛:比如原本记录结点1到结点4的距离为6,这次k是结点2,结点1到结点2距离为2,结点2到结点4的距离为3,总距离为5,即可更新结点1到结点4的距离 还不是很懂dp,所以不太会解释 结点k是结点i和j之间的中转站 注意 阅读全文
posted @ 2020-10-11 22:09 肥斯大只仔 阅读(1198) 评论(0) 推荐(0)
摘要:总结分析 总共分成两步 第一步:寻找一个这次要确认的结点 第二步:利用这次确认的结点,对所有未确认结点到源点的距离进行松弛 松弛:比如原本记录源点到结点4的距离为6,这次确认了结点2,源点到结点2距离为2,结点2到结点4的距离为3,总距离为5,即可更新结点4到源点的距离 二维数组G,记录结点间的距离 阅读全文
posted @ 2020-10-11 19:09 肥斯大只仔 阅读(1039) 评论(0) 推荐(0)
摘要:分析 为什么要这样做:还是用网上的例子,从10亿个未排序整型数字查找一个数字 整型int:4字节,32位,10亿个,查找过程需要内存大概4GB,10亿约等于2的30次方 使用位图:查找过程需要内存大概4KB set函数 index为数组索引 pos,一个int整型数字转化为二进制有32位,所以我们可 阅读全文
posted @ 2020-10-10 17:19 肥斯大只仔 阅读(143) 评论(0) 推荐(0)
摘要:前序、中序、后序递归 非常简单,调整访问根节点的时机即可 void traverse(TreeNode* root){ if(!root) return; //递归出口 //cout << root->val <<endl; //前序 traverse(root->left); //cout << 阅读全文
posted @ 2020-10-07 11:27 肥斯大只仔 阅读(104) 评论(0) 推荐(0)
摘要:总结 详细原理网上一大堆,这里只简单的总结一下自己的理解 KMP匹配前需要的有主串a,模式串b,数组next 普通匹配会浪费时间,比如匹配好了一大串字符了,最后一个不匹配,下一次匹配要从这次匹配主串的起点的下一个字符开始匹配,而实际上刚刚匹配好的一大串字符,可能不需要再匹配 这里先为主串分配指针i, 阅读全文
posted @ 2020-10-07 00:06 肥斯大只仔 阅读(99) 评论(0) 推荐(0)
摘要:例子 有一数列d,包含元素的d0,d1,d2,d3...dn,每次选择任意的[L,R]范围的元素进行+1操作 代码 //输入参数为数列vector<int> seq,vector<vector<int>> range vector<int> b(seq.size()+5,0); for(int i= 阅读全文
posted @ 2020-09-20 12:12 肥斯大只仔 阅读(112) 评论(0) 推荐(0)
摘要:sort()采用的排序算法是不稳定的,相同的元素排序后可能会改变它们的原本的相对位置。 如果需要稳定的sort()方法,可以使用 stable_sort() 方法,使用方法同sort()。 当可用空间足够的情况下,该函数的时间复杂度可达到O(N log2(N));反之,时间复杂度为O(N log2( 阅读全文
posted @ 2020-05-17 11:23 肥斯大只仔 阅读(1292) 评论(0) 推荐(0)
摘要:题目内容 系统进程统计 设计一个程序,每秒统计一次当前系统的进程状况,并按照内存使用自多到少排序打印输出相关信息。对已经结束的进程,另外给出一个列表,并显示该进程的结束时间和持续时间。 基本要求 1. 该题目要求使用两个链式线性表。一个链表存储当前活动进程,要求使用双向链表,排序要求是按照内存使用自 阅读全文
posted @ 2020-02-05 23:26 肥斯大只仔 阅读(901) 评论(0) 推荐(0)
摘要:算法介绍 一种最简单的交换排序方法, 它通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上“漂浮”(左移),或者使关键字大的记录如石块一样逐渐向下“坠落”(右移)。 算法例题 用随机函数生成16个2位正整数(10~99),利用 冒泡排序法 将其排序。 算法 阅读全文
posted @ 2019-12-01 10:40 肥斯大只仔 阅读(599) 评论(0) 推荐(0)
摘要:算法介绍 在待排序序列中找到最小元素,存放到已排好序的有序表的终点位置,从而得到一个新的、记录数量增1的有序表。 算法例题 用随机函数生成16个2位正整数(10~99),利用 简单选择排序法 将其排序。 算法思路 书面概括 1. 将待排序的元素存放在数组 r[1...n] 中。第一趟从 r[1] 开 阅读全文
posted @ 2019-11-29 16:48 肥斯大只仔 阅读(327) 评论(0) 推荐(0)
摘要:算法介绍 一种最简单的排序方法,其基本操作是将一条记录插入到已排好序的有序表中,从而得到一个新的、记录数量增1的有序表。 算法例题 用随机函数生成16个2位正整数(10~99),利用 直接插入排序法 将其排序。 算法思路 书面概括 将待排序的元素存放在数组 r[1...n] 中, r[1] 是一个有 阅读全文
posted @ 2019-11-28 21:25 肥斯大只仔 阅读(379) 评论(0) 推荐(0)
摘要:排序 排序时按关键字的非递减或非递增顺序对一组记录重新进行排列。(内部排序) 稳定性 **稳定:**假设R[i] == R[j],i < j,即在原序列中R[i]在R[j]前面。排序后,R[i]仍在R[j]前面; **不稳定:**假设R[i] == R[j],i < j,即在原序列中R[i]在R[j 阅读全文
posted @ 2019-11-28 19:43 肥斯大只仔 阅读(200) 评论(0) 推荐(0)
摘要:线性表 定义: 由n个特性相同 数据元素(即可有很多数据项)构成的有限序列,同时相邻数据元素之间存在 序偶 关系。 线性表中元素个数就是 表长 。 特点: ·存在唯一一个被称为 “第一个” 的数据元素(线性起点、起始结点); ·存在唯一一个被称为 “最后一个” 的数据元素(线性终点、终端结点); · 阅读全文
posted @ 2019-09-23 21:38 肥斯大只仔 阅读(262) 评论(0) 推荐(0)
摘要:数据结构 数据结构就是有特定关系的数据元素的集合,包括逻辑结构和存储结构。 ·逻辑结构 逻辑结构就是一个数学模型,表达的是数据元素之间的逻辑关系。 它有四类基本结构,分别是集合结构、线性结构、树结构和图结构。 集合结构:这个就很通俗易懂就是初中高中所学的集合。数据元素之间除了属于同一集合外没有别的关 阅读全文
posted @ 2019-09-16 21:12 肥斯大只仔 阅读(166) 评论(0) 推荐(0)

1