数据结构与算法
iamzhaiwei
这个作者很懒,什么都没留下…
展开
-
微软等公司数据结构+算法面试100题--树
引用自博客 http://blog.csdn.net/v_JULY_v1.(原第1题)----------------------------------------------把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 /转载 2012-04-25 18:03:20 · 851 阅读 · 0 评论 -
选择原料工厂
12个工厂分布在一条东西向高速公路的两侧,工厂距离公路最西端的距离分别是0、4、5、10、12、18、27、30、31、38、39、47.在这12个工厂中选取3个原料供应厂,使得剩余工厂到最近的原料供应厂距离之和最短,问应该选哪三个厂?分析:1、是一维问题,不是二维,可以抽象成:有12个点分布在一维坐标轴上,选择3个点,使得剩余的点到最近的点的距离之和最小。2、工厂距离是从小到大排序的原创 2012-07-28 17:13:27 · 2207 阅读 · 0 评论 -
设计海量key-value数据的存储查询模块
(百度2011)单机存储100亿大数据量的key-value数据,要求能够支持插入和查询操作,单条数据长度不定,平均约1024字节,假设可用内存10G,磁盘空间不限,请设计一个存储查询模块,支持按照key来获取对应的value,设计目标以查询性能为先,尽量节约资源,查询可以理解为网民的检索行为。1) 说明该设计方案和主要思路,以及优缺点2) 请详细说明该原创 2012-09-02 18:42:53 · 2283 阅读 · 0 评论 -
数据结构与算法试题集锦
1 数组1.1 两个已排序的整型数组,求交集,最快算法 (百度)输入:两个已排序的整型数组(int a[m], b[n])输出:两个数组的交集分析:注意有4种情况:a升序,b升序;a升序,b降序;a降序,b升序;a降序,b降序。1.2 逆序对(百度)多人排成一个队列,我们认为从低到高是正确的序列,但是总有部分人不遵守秩序。如果说,前面的人比后面的人高(两人身原创 2012-08-30 20:05:11 · 6897 阅读 · 0 评论 -
设计MP3搜索引擎
(百度)假设一个 mp3 搜索引擎收录了 2^24 首歌曲,并记录了可收听这些歌曲的 2^30 条 URL,但每首歌的 URL 不超过 2^10 个。系统会定期检查这些 URL,如果一个 URL 不可用则不出现在搜索结果中。现在歌曲名和 URL 分别通过整型的 SONG_ID 和 URL_ID 唯一确定。对该系统有如下需求:1) 通过 SONG_ID 搜索一首歌的 URL_ID,给出 URL_原创 2012-09-02 18:44:58 · 1379 阅读 · 0 评论 -
数据挖掘——决策树算法
决策树算法1、摘要 在前面两篇文章中,分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法。这两种算法都以贝叶斯定理为基础,可以对分类及决策问题进行概率推断。在这一篇文章中,将讨论另一种被广泛使用的分类算法——决策树(decision tree)。相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置,因此在实际应用中,对于探测式的知识发现,决转载 2012-09-02 19:22:47 · 1434 阅读 · 0 评论 -
百度笔试题
一、选择题:15 分共 10 题 1. 在排序方法中,关键码比较次数与记录地初始排列无关的是:DA. Shell 排序 B. 归并排序 C. 直接插入排序 D. 选择排序 2. 以下多线程对 int 型变量x的操作,哪几个需要进行同步:B CA. x=y; B. x++; C. ++x; D. x=1; 3. 代码void func(){ static原创 2012-08-27 20:52:31 · 1377 阅读 · 0 评论 -
中缀、前缀、后缀表达式之间的转换
中缀表达式转换为后缀表达式:从前面扫描,从前面输出中缀表达式转换为前缀表达式:从后面扫描,从后面输出前缀表达式和后缀表达式转换为中缀表达式:重建计算树,中序遍历树,子节点的优先级若低于父节点,子树的表达式两端加括号稍后贴上源程序原创 2012-07-19 21:21:12 · 849 阅读 · 0 评论 -
淘宝面试题:有一个一亿节点的树,现在已知两个点,找这两个点的共同的祖先。
如题。分析:假设这棵树的每个结点都有n的指针指向n棵子树,可能有的子树为空。已知的两个结点的关系有两种情况:一个结点是另一个结点的祖先,这种情况第一个结点是两个结点的共同祖先;第三个结点是两个结点的共同祖先。算法:递归遍历每个结点,如果当前结点是空结点,返回NULL,如果当前结点等于两个结点中的一个,返回当前结点指针递归遍历当前结点的所有子树,返回n个结点指原创 2012-06-30 16:46:37 · 4789 阅读 · 2 评论 -
雅虎面试题─有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
有双向循环链表结点定义为:struct node{ int data; struct node *front,*next;};有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除。用两个向量A_vec、B_vec分别存储链表A、B的元素值,将A_vec、B_vec排序,用类似归并排序的方原创 2012-06-22 16:01:34 · 7356 阅读 · 1 评论 -
微软等公司数据结构+算法面试100题--链表
1.(原第7题)----------------------------------------------微软亚院之编程判断俩个链表是否相交给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:1.如果链表可能有环列?2.如果需要求出俩个链表相交的第一个节点列?2.(原第13题)------转载 2012-04-28 14:02:32 · 1006 阅读 · 0 评论 -
微软等公司数据结构+算法面试100题---数组
1.(原第3题)----------------------------------------------------------------------求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 1转载 2012-05-05 20:02:26 · 1125 阅读 · 0 评论 -
谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。Google2009华南地区笔试题给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含),指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。比如,A=[1,0] K=原创 2012-06-21 19:47:08 · 7420 阅读 · 1 评论 -
雅虎面试题─把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列
编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。实现了unsigned long型的转换。// 十进制转换为二进制,十进制数的每1bit转换为二进制的1位数字char *int_to_bin(unsigned long data){ int bit_num = sizeof(unsigned long) * 8; char *原创 2012-06-22 15:28:53 · 4080 阅读 · 3 评论 -
华为面试2:1分2分5分的硬币,组成1角,共有多少种组合。
动态规划,注意不要有重复的,例如组成1角钱,5 2 2 1 和 1 2 2 5是1种组合算法的设计思想在程序中注释的很清楚。解法一:// 动态规划// total_money: 要找的零钱总和// changes: 零钱数组,已经从小到大排序,第1个元素设为0,有效元素从第2个位置即下标1开始// kinds_change: 零钱种类int make_change_prob原创 2012-07-05 11:38:49 · 4607 阅读 · 0 评论 -
面试题─用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列
用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列,如:512234、412325等,要求:"4"不能在第三位,"3"与"5"不能相连。// str: 字符串// begin: 字符串第一个字符的索引// end: 字符串最后一个字符的索引// cnt: 统计全排列的数目,调用之前赋值为0void string_full_permutation_conta原创 2012-06-22 20:12:06 · 3844 阅读 · 1 评论 -
百度2013校园招聘笔试题
第一题,基础题:1. 数据库及线程产生死锁的原理和必要条件,如何避免死锁。2. 列举面向对象程序设计的三个要素和五项基本原则。3.Windows内存管理的方式有哪些?各自的优缺点。第二题,算法与程序设计:1.公司举行羽毛球比赛,采用淘汰赛,有1001个人参加,要决出“羽毛球最高选手”,应如何组织这次比赛?可以使用伪代码。2.有100盏灯泡,第一轮点亮所有电灯,第二轮每两盏灯原创 2012-09-23 11:35:55 · 1672 阅读 · 0 评论