![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础
对不起该昵称已存在
这个作者很懒,什么都没留下…
展开
-
2020-09-27
哈希函数与哈希表一、哈希函数具有的特征二、布隆过滤器三、一致性哈希 一、哈希函数具有的特征 1、输入无穷大,输出是有限的。 2、哈希函数的计算规则一定是确定的,其中没有随机的成分。当输入是相同的时候,哈希函数的输出也一定是相同的;但是由于输入无限,输出一定,所以不同的输入可能有相同的输出。 3、哈希函数具有均匀性,当有大量的不同的输入的时候,相应的哈希函数值的分布是均匀的,即输入的规律与输出之间是没有关系的。(这在利用哈希函数提升性能时有很多的应用) 在哈希函数的使用过程中注意取模可以减少规模简化问题。原创 2020-09-27 23:28:51 · 217 阅读 · 0 评论 -
暴力递归到动态规化
暴力递归到动态规化一、一般步骤二、例题1、字符串问题2、背包问题 一、一般步骤 首先写出题目的暴力递归版本 观察在递归版本中变量是哪几个,然后根据变量建立动态规化的数组,明确动态规化方程的含义是什么 根据动态规化数组填充的方式决定计算的顺序以及动态规化初始条件和动态规化方程。并且要明确我们要求的是动态规化方程的哪一项 二、例题 1、字符串问题 题目:规定1和A对应、2和B对应、3和C对应…… ...原创 2019-08-12 20:49:44 · 122 阅读 · 0 评论 -
贪心算法
前缀树一、贪心算法介绍二、贪心问题举例1、字符串连接 一、贪心算法介绍 贪心算法,也就是可以通过局部的最优得到全局最优,其证明很多时候是复杂的。 注意点: 很多贪心算法使用的时候需要进行排序,这个时候需要我们规定排序灯的规则,那么要保证规定的排序方式是有传递性的,也就是正确的 二、贪心问题举例 1、字符串连接 题目描述:给定一个字符串类型的数组strs,找一种拼接的方式,使得把所有的字符串拼起...原创 2019-08-09 18:25:24 · 287 阅读 · 0 评论 -
今日份题目
今日份题目一、贪心习题--三国游戏问题二、贪心问题—Huffman编码的使用三、贪心——销售员问题 一、贪心习题–三国游戏问题 分析:由于最佳的组合是绝对不能取到的,但是由于人先取,那么第二大的一定可以取到,所以就找出每个组合中第二大的,并且先取第二大中的最大的那个,那么人一定会获胜,最大的默契值也是该值。 代码: #include<iostream> #include<stri...原创 2019-08-13 18:27:49 · 83 阅读 · 0 评论 -
前缀树和TRIE树
前缀树和Trie图一、前缀树二、TRIE树(寻找子串) 一、前缀树 结构:用树的方式表示字符串,每个节点有p和e,p表示的是有一个字符串经过该结点,e表示的是其是否为一个字符串的终止结点。如图所示: 作用:用于字符串的查找和判断字符串的前缀。 代码: //结点的结构,有pass和end,还有其孩子结点,也就是边 //注意字符的值是在边上的 struct node { int p; int e...原创 2019-08-13 15:29:55 · 218 阅读 · 0 评论 -
图
图结构及其算法一、图的结构(1)图的遍历,bfs和dfs(2)图的拓扑排序 一、图的结构 与图有关的问题的关键在于图是如何进行储存的,所以我们应该有自己熟悉的图的结构,当遇到问题的时候应该将题目所给的图结构转化为自己熟悉的结构。 通常图的存储方法有邻接表和邻接矩阵,下面是本人借鉴大佬的比较完整的图的结构: //图结构,从节点和边两个角度进行考虑 //因为是一个图,所以要保持一致 //那么在储存的时...原创 2019-07-31 17:49:38 · 137 阅读 · 0 评论 -
链表
目录一、C++中的STL容器使用迭代器删除问题1、结点式容器2、顺序式容器二、链表 一、C++中的STL容器使用迭代器删除问题 在我们使用迭代器iterator遍历STL容器的时候,我们并不能直接在使用迭代器遍历的时候进行删除,否则就会报错,例如: //在用迭代器遍历容器的时候进行删除操作 vecor<int> v; vector::iterator itr; for(itr=v.be...原创 2019-07-26 12:50:36 · 138 阅读 · 0 评论 -
认识复杂度和简单排序
一、怎样评估某个算法的优劣 二、简单的排序算法 三、二分算法 四、题目总结 五、今日刷题 一、怎样评估某个算法的优劣 使用时间复杂度,但是时间复杂度不是值具体运行的时间,而是值其操作的次数。 递归算法的时...原创 2019-07-22 15:28:16 · 122 阅读 · 0 评论 -
二叉树
目录二叉树1、二叉树的遍历a、二叉树的递归遍历b、二叉树的遍历的非递归实现c、二叉树的宽度优先遍历2、二叉树的相关题目(1)、怎样判断一棵二叉树是平衡二叉树(2)、怎样判断一棵满二叉树(3)判断二叉树是否为满二叉树(4)判断二叉树为平衡二叉树 二叉树 1、二叉树的遍历 二叉树的遍历有先序遍历、中序遍历和后序遍历和宽度优秀遍历。 a、二叉树的递归遍历 使用递归遍历二叉树的时候,根据递归函数调用的特点...原创 2019-07-29 18:44:54 · 157 阅读 · 0 评论 -
详解桶排序以及排序内容总结
一、桶排序以及排序总结 二、今日刷题 一、桶排序以及排序总结 1、快排 快排的核心就是partition(将上一篇博客int jumpFloor(int number) { int d[10000]; memset(d,0,sizeof(d)); d[1] = 1; d[2] = 2; if(number>2)...原创 2019-07-24 18:19:39 · 187 阅读 · 0 评论 -
时间复杂度为O(n*logn)的排序算法
一、时间复杂度为O(n*logn)的排序算法 二、今日刷题 一、时间复杂度为O(n*longn)的排序算法 1、归并排序: 排序的思想:就是不断分成两部分:左边和右边,分别将左边和右边有序之后才进行合并得到最后的有序的数组。 时间复杂度:o(n*logn)。 核心:归并排序之所以能达到o(n*logn)的时间复杂度,主要原因是其避免了很多不必要的排序,当保持左边和右边部分有序之后,其进行合并的时候...原创 2019-07-23 18:20:50 · 2690 阅读 · 0 评论