数据结构+算法
DarkNight_YuJiang
1.喜欢编程,有过2年javaEE开发经验;
2.能快速了解业务,有很好的工作主动性,能够快速的融入团队
3.能够承受一定的压力,具有有良好的沟通意识、合作意识和执行能力
4.喜欢学习接触新的技术
展开
-
(一)把二元查找树转变成排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / \转载 2014-12-29 11:46:57 · 527 阅读 · 0 评论 -
给出两个单词,找到它们的最短距离
题目有一个很大的文本文件,里面包含许多英文单词。给出两个单词,找到它们的最短距离 (以它们之间隔了多少个单词计数)。你能在O(1)的时间内返回任意两个单词间的最短距离吗? 你的解法空间复杂度是多少?解答先看一个例子,为了简单起见,我们假设文件里就只有以下两句话。然后, 我们现在来求is和name的最短距离。假设相邻的两个单词距离为1。12What is转载 2015-10-14 10:39:48 · 3164 阅读 · 0 评论 -
算法-求二进制数中1的个数
任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题;方式一:移位+计数int BitCount(unsigned int n){ unsigned int c =0 ; // 计数器 while (n >0) {转载 2015-09-23 13:56:02 · 576 阅读 · 0 评论 -
十道海量数据处理面试题与十个方法大总结
第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多原创 2015-10-10 20:35:23 · 430 阅读 · 0 评论 -
各种排序算法比较(2):时间复杂度,空间复杂度
时间复杂度n^2表示n的平方,选择排序有时叫做直接选择排序或简单选择排序排序方法平均时间最好时间最坏时间桶排序(不稳定)O(n)O(n)O(n)基数排序(稳定)O(n)O(n)O(n)归并排序(稳定)O(nlogn)O(nlogn)O(nlogn)快速排序(不稳定)O转载 2015-07-25 16:52:55 · 1956 阅读 · 0 评论 -
排序算法--睡眠排序
我们学数据结构的时候会学到多种排序算法,基本上都是基于比较的排序,下面的这个排序算法并不是基于比较,确切的说它是基于cpu调度算法实现的,这个算法的作者称之为--睡眠排序。 它的基本思想是,对一组数据进行排序,不能存在负数值,这个数是多大,那么就在线程里睡眠它的10倍再加10,不是睡眠和它的数值一样大的原因是,当数值太小时,误差太大,睡眠的时间不比输出的时间少,那么就会存在不正确的输转载 2015-07-25 16:49:06 · 1325 阅读 · 0 评论 -
各种排序算法比较(1):稳定性
前面有讲到了9种排序算法:1.简单选择排序 2.堆排序 (1和2是属于选择排序)3.直接插入排序 4.希尔排序 (3和4属于插入排序,有时把改进后的直接插入排序叫做二分插入)5.冒泡排序 6.快速排序 (5和6属于交换排序.交换排序顾名思义是不停的交换数据位置.但实际上选择排序也在不停的交换元素,但次数较少,只有找到最大值才一次转载 2015-07-25 16:50:45 · 502 阅读 · 0 评论 -
(四)在二元树中找出和为某一值的所有路径
百度面试题目: 输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。 例如输入整数 22 ,如下图二元树: 10转载 2014-12-29 12:15:29 · 616 阅读 · 0 评论 -
(二)设计包含min函数的栈
设计包含min函数的栈:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素;要求函数min、push以及pop的时间复杂度都是O(1)。分析: 要得到当前栈的最小元素,且时间复杂度为O(1),这不但要求知道当前栈中的最小元素值(或其所在位置),而且要知道次小元素,这样才能保证,如果当前栈顶元素为最小元素,被pop后,还能以O(1)的时间复杂转载 2014-12-29 11:49:50 · 408 阅读 · 0 评论 -
(三) 求子数组的最大和
题目:求子数组的最大和 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n) 。 例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5 ,和最大的子数组为 3, 10, -4, 7, 2 ,因此输出为该子数组的和18 。分析:转载 2014-12-29 11:51:03 · 367 阅读 · 0 评论 -
写一个函数,计算0到n之间2的个数。
题目写一个函数,计算0到n之间2的个数。解答最简单直观的方法就是对于0到n之间的数,一个个地去统计2在它们上出现的个数, 然后累加起来即可。求2在某个数上出现的次数需要O(logn)的时间,一共有n个数, 所以共需要O(nlogn)的时间。如果我们把问题一般化一下:写一个函数,计算0到n之间i出现的次数,i是1到9的数。 这里为了简化,i没有包含0,因为按以上的转载 2015-10-14 10:52:48 · 1710 阅读 · 0 评论