
算法
梅梅的记事本
这个作者很懒,什么都没留下…
展开
-
数据结构--查找
1.顺序查找 相比于每次拿一个数据都要进行是否越界判断,可以设置一个哨兵,查找从顺序表的尾部开始。原创 2020-01-13 11:26:32 · 155 阅读 · 0 评论 -
图
图相关的概念: 图 :图是由顶点集合,边集合组成,通常顶点集合不能为空,边可为空。 通常:在树中用结点表示数据元素,在图中用顶点vertex表示数据元素 无向边:顶点i到顶点j之间的边没有方向,这条边叫无向边,用无序偶对(i,j)来表示 有向边:两个顶点之间的边有方向,称为弧arc。用有序偶对<i,j>表示 简单图:不存在顶点到自身的边,且同一条边不重复出现,我们研究的图的范畴就是简...原创 2020-01-08 10:23:40 · 202 阅读 · 0 评论 -
树
树:1)一个根节点,2)不相交子树之间 树:二叉树,满二叉树,完全二叉树,线索二叉树 树的顺序存储:双亲表示法,孩子表示法,孩子兄弟表示法 链式存储:二叉链表 parent:双亲 sibling:兄弟 树高度或者深度:树中结点的最大深度 二叉树:五个形态,空;一个根节点;带有一个左子树;带有一个右子树;带有左子树和右子树 满二叉树:完美是理想,不完美才是人生1)所有分支结点都存在左子树和右子树 2...原创 2020-01-07 15:43:41 · 139 阅读 · 0 评论 -
链表基础操作
1.链表定义 struct ListNode { int val; ListNode *next; ListNode(int x):val(x),next(NULL){} }; 2.链表创建 方法一:尾插法,即输出顺序与插入顺序一致 ListNode *head=new ListNode(0); head->next=NULL; ListNode *p,*r; r=head; ...原创 2019-04-27 22:52:54 · 245 阅读 · 0 评论 -
哈希查找基础介绍
顺序,二分,二叉排序树和平衡二叉树的四种查找均是建立在关键字比较的基础上,查找效率依赖于查找过程中进行关键字的比较。哈希的查找就是在理想情况下不需要比较找到待查找的关键字期望的时间为O(1)。 哈希定义 我们将结点的关键字与结点的存储位置的对应关系称为哈希函数,通常用H表示,其 自变量是结点的关键字key,即 H=H(key)。 哈希函数的函数值称为哈希地址;而根据哈希函数建立的表就成为哈希表。 ...原创 2019-04-25 10:43:35 · 544 阅读 · 0 评论 -
赫夫曼树和编码
赫夫曼编码好难啊,昨天状态不好,一个不好的开端,后续学明白再补充赫夫曼编码和赫夫曼树的构造。 赫夫曼编码的出现意义:解决了远程通信的数据传输问题 ...原创 2020-01-08 09:37:43 · 152 阅读 · 0 评论 -
KMP
模式匹配:KMP 算法思路:主串每个字符作为子串开头,对主串进行大循环,然后每个字符开头做小循环 要当心的地方是,当我们子串后移动的过程中,其实就是:主串位置++; 而当我们主串不动,进行模式匹配的过程中,其实就是:主串位置++,子串位置++ 时间复杂度:O(M+N),最坏时间复杂度:O((M-N+1)*N) abbc求前缀,后缀? 前缀为:a , ab , abb , abbc 后缀为:c , ...原创 2020-01-06 15:13:13 · 135 阅读 · 0 评论 -
一些列数的最大连续子串和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个数),返回其最大和。 Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6. **思路:用s[i]表示i前面的最大顺序串和,数组a表示给出的一系列数值可能正,可能负。当i=0时...原创 2019-04-24 22:52:50 · 425 阅读 · 0 评论 -
二分相关问题
最终解决的问题:在一些有序整数中(可能有正,0,负),找到绝对值最小的数 1.普通的二分查找 int bin(int a,int n,int b) { int low=1,high=n; while(low<high) { int mid=(low+high)/2; if(a[mid]==b) return mid if(a[mid]>b) high=mid-1; else low=...原创 2019-04-24 23:09:14 · 189 阅读 · 0 评论