
算法
文章平均质量分 63
ShininGold
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Dijkstra算法详解
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。 问题描述:在无向图 G=(V,转载 2017-03-05 23:53:01 · 1748 阅读 · 0 评论 -
输入一个满二叉树的深度和它的三个节点,求三个节点最小子树的,根节点
例如:输入深度为4,三个子节点分别为10,13,15,最小子树的根节点为12. 我们可已根据树的遍历方式推测出这是一个中序遍历值为从1到2^k-1。 我们可以用二分搜索技术来找最小子树的根节点。 [cpp] view plain copy //基于二分搜索 #include #include int FindMin(原创 2017-08-30 01:05:36 · 951 阅读 · 0 评论 -
寻找数组中最小的k个数(快排和堆排)
题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路1:利用快排的思想,寻找第k个位置上正确的数,k位置前面的数即是比k位置小的数组,k后面的数即是比k位置元素大的数组。 思路2:利用堆排序,特别适用于海量数据中寻找最大或者最小的k个数字。即构建一个大堆容器,初始化大小为k,变量初始数,如初原创 2017-06-29 13:14:07 · 1303 阅读 · 0 评论 -
求数组中只出现一次的数字
假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗? 分析: 方法一、若使用辅助的存储方式,该选择何种存储方式呢?可使用hash的存储方原创 2017-04-05 15:10:54 · 557 阅读 · 0 评论 -
KMP算法详解
字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容易理解,网上转载 2017-03-16 00:14:18 · 264 阅读 · 0 评论 -
动态规划算法
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过一个转载 2017-03-31 10:26:08 · 353 阅读 · 0 评论 -
常用的排序算法总结
查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。 面试官对于这些排序可原创 2017-03-13 21:20:04 · 448 阅读 · 0 评论 -
2017网易游戏笔试
刚刚做完网易笔试题,就写出了两题,趁脑子还清醒,写下来记住。 第一题代码: #include using namespace std; int main() { int M, N, x, y, i, j; cin >> M >> N; int *a = new int[M]; for (i = 0; i < M; i++) a[i] = 0;//初始化硬币起始状态 while原创 2017-03-20 21:32:37 · 1456 阅读 · 0 评论 -
海量数据常见的面试题(频次最高+随机抽样)
【在海量数据中统计出现次数最多的n个】 分两种情况, 1 如果数据能够在内存中放下,比如如果海量数据是ip地址,最多有4G个ip地址,每个ip地址占4个字节 需要内存16G,如果内存在几十G,则完全可以全部装入内存, 直接读取大文件,然后创建一个hash表,统计次数,最后再用堆统计最大的n个 2 如果不能在内存放下,比如海量数据是字符串,不同的字符串个数无限,内存中可原创 2017-03-12 16:35:27 · 2051 阅读 · 0 评论 -
m进制转换为n进制-任意进制转换算法
这种题也是一道经典的面试题,主要考察进制转换细想,Coding质量等。 当我们把十进制转成二进制的时候,我们通过辗转相除,取余,逆置余数序列的过程得到新的进制的数。因此我们可以借助这种思想把M进制转成N进制的数。 如下是C的详细的实现方法 void m2n(int m, char* mNum, int n, char* nNum) { int i = 0; ch原创 2017-03-11 16:07:03 · 1234 阅读 · 0 评论 -
最短路径问题---Floyd算法详解
前言 Genius only means hard-working all one’s life. Name:Willam Time:2017/3/8 1、最短路径问题介绍 问题解释: 从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径 解决问题的算法: 迪杰斯特拉算法(Dijkstra算法)弗洛伊德算法(Floyd算法)S转载 2017-11-06 11:23:11 · 600 阅读 · 0 评论