程序员编程艺术:三之三续、求数组中给定下标区间内的第K小(大)元素
摘要:作者:July、上善若水、编程艺术室。出处:http://blog.csdn.net/v_JULY_v。前奏 原狂想曲系列已更名为:程序员编程艺术系列。原狂想曲创作组更名为编程艺术室。编程艺术室致力于以下三点工作:1、针对一个问题,不断寻找更高效的算法,并予以编程实现。2、解决实际中会碰到的应用问题,如第十章、如何给磁盘文件排序。3、经典算法的研究与实现。总体突出一点:编程,如何高效的编程解决实际问题。欢迎有志者加入。 ok,扯远了。在上一章,我们介绍了第十章、如何给10^7个数据量的磁盘文件排序,下面介绍下本章的主题。我们知道,通常来讲,寻找给定区间内的第k小(大)的元素的问题是ACM中一类
阅读全文
posted @
2013-05-16 00:08
知识天地
阅读(599)
推荐(0) 编辑
十四、第三章再续:快速选择SELECT算法的深入分析与实现
摘要:作者:July。出处:http://blog.csdn.net/v_JULY_v。前言 经典算法研究系列已经写了十三个算法,共计22篇文章(详情,见这:十三个经典算法研究与总结、目录+索引),我很怕我自己不再把这个算法系列给继续写下去了。沉思良久,到底是不想因为要创作狂想曲系列而耽搁这个经典算法研究系列,何况它,至今反响还不错。 ok,狂想曲第三章提出了一个算法,就是快速选择SELECT算法,关于这个SELECT算法通过选取数组中中位数的中位数作为枢纽元能保证在最坏情况下,亦能做到线性O(N)的时间复杂度的证明,在狂想曲第三章也已经给出。 本文咱们从快速排序算法分析开始(因为如你所知,快速选择
阅读全文
posted @
2013-05-16 00:07
知识天地
阅读(594)
推荐(0) 编辑
程序员编程艺术第一章、左旋转字符串
摘要:作者:July,yansha。时间:二零一一年四月十四日。微博:http://weibo.com/julyweibo。出处:http://blog.csdn.net/v_JULY_v。-------------------------------------------目录序前言第一节、左旋转字符串第二节、两个指针逐步翻转第三节、通过递归转换,缩小问题之规模第四节、stl::rotate算法的步步深入第五节、总结前言 本人整理微软等公司面试100题系列,包括原题整理,资源上传,帖子维护,答案整理,勘误,修正与优化工作,包括后续全新整理的80道,总计180道面试题,已有半年的时间了。 关于这18
阅读全文
posted @
2013-05-16 00:05
知识天地
阅读(484)
推荐(0) 编辑
程序员编程艺术:第三章、寻找最小的k个数
摘要:作者:July,zhouzhenren,yansha。 致谢:微软100题实现组,狂想曲创作组。 时间:2011年05月08日 微博:http://weibo.com/julyweibo。 出处:http://blog.csdn.net/v_JULY_v。 wiki:http://tctop.wikispaces.com/。-----------------------------------------------前奏 在上一篇文章,程序员面试题狂想曲:第三章、寻找最小的k个数中,后来为了论证类似快速排序中partition的方法在最坏情况下,能在O(N)的时间复杂度内找到最小的k个数,而.
阅读全文
posted @
2013-05-16 00:04
知识天地
阅读(1023)
推荐(0) 编辑
程序员编程艺术:第二章、字符串是否包含及匹配/查找/转换/拷贝问题
摘要:作者:July,yansha。时间:二零一一年四月二十三日。致谢:老梦,nossiac,Hession,Oliver,luuillu,雨翔,啊菜,及微软100题实现小组所有成员。微博:http://weibo.com/julyweibo。出处:http://blog.csdn.net/v_JULY_v。-------------------------------------------目录曲之前奏第一节、一道俩个字符串是否包含的问题 1.1、O(n*m)的轮询方法 1.2、O(mlogm)+O(nlogn)+O(m+n)的排序方法 1.3、O(n+m)的计数排序方法第二节 2.1、O(n+m
阅读全文
posted @
2013-05-16 00:02
知识天地
阅读(441)
推荐(0) 编辑
六之再续:KMP算法之总结篇(必懂KMP)
摘要:引记 此前一天,一位MS的朋友邀我一起去与他讨论快速排序,红黑树,字典树,B树、后缀树,包括KMP算法,唯独在讲解KMP算法的时候,言语磕磕盼盼,我想,原因有二:1、博客内的东西不常回顾,忘了不少;2、便是我对KMP算法的理解还不够彻底,自不用说讲解自如,运用自如了。所以,特再写本篇文章。由于此前,个人已经写过关于KMP算法的两篇文章,所以,本文名为:KMP算法之总结篇。本文分为二个部分:第一部分、再次回顾普通的BF算法与KMP算法各自的时间复杂度,并两相对照各自的匹配原理;第二部分、通过我此前一篇文章的引用,用图从头到尾详细阐述KMP算法中的next数组求法,并运用求得的next数组写出K.
阅读全文
posted @
2013-05-15 22:12
知识天地
阅读(542)
推荐(0) 编辑
网易有道面经(2013校园招聘杭州站)zz
摘要:原文地址:http://blog.csdn.net/hopeztm/article/details/8026457上机考试:网易有道的筛选模式是先上机考试,然后根据上机考试选择大概1/3参加面试。上机的平台和ACM有点类似,提交代码然后有手动阅卷。上机考试时隔比较久远,不过还能想起两个题目:1. 给定一个点分IP地址表示,写个程序把它转换成相应的32位的无符号整数并输出,如果输入不是合法数据,就返回0.这个题目如何利用好标准输入输出,其实可以很容易判断出不合法的输入用例,不过当时没有想好,导致这个题目没有AC。后来回去写的代码如下:[cpp]view plaincopy#include<
阅读全文
posted @
2012-11-21 14:53
知识天地
阅读(299)
推荐(0) 编辑
面试题总结
摘要:1 实现正则表达式函数,正则表达式中含有 * ?2 给定三元组(buy,count,prize)(sell,count,prize)指定prize x,是的大于prize的buy都可以买到,小于prize的sell都能卖出去,满足条件的x使得交易量最大3
阅读全文
posted @
2012-11-12 10:40
知识天地
阅读(138)
推荐(0) 编辑
1,2,...n n个数m个丢失,找出丢失的数
摘要:最简单的方法,开个O(n)的空间,扫描一遍,吧出现的数的记录下来。再扫描一下找出丢失的数字。时间复杂度O(n)如果不允许开空间:可以排序,然后遍历一遍找出未出现的数。采用基数排序O(d*n),当n<=100000是复杂度 O(7*n)解决O(n),不过破坏了原来的数组不破坏原来数组的方法:如果小于n个数补0 补成n个数。扫描数组,if(a[i]>0)a[a[i]]+=2*n;再扫描一遍 if(a[i]<=n) cout<<i<< " ";else a[i] -= 2*n;//恢复数组O(2*n),不破坏原数组
阅读全文
posted @
2012-10-29 16:39
知识天地
阅读(414)
推荐(0) 编辑
任务调度问题
摘要:给定n个任务,每个任务有一个开始时间和结束时间。系统同一时刻只能执行一个任务,如何安排才能让系统完成尽量多的任务。首先对任务按结束时间排序。然后用贪心算法,遍历每一个任务,如果还未超过当前任务的最晚开始时间,这执行此任务。
阅读全文
posted @
2012-10-14 22:15
知识天地
阅读(431)
推荐(0) 编辑
中位数优先容器
摘要:要求编写一个容器,它可支持两种操作:push()和pop(),push(K)操作可将元素K放入容器,pop()操作可将容器中的中位值弹出。例如:push(1),push(2),push(3)后pop()[输出为2]。解决方法,创建一个最大值优先的优先队列,将其记为左队列ql,创建一个最小值优先的优先队列,将其记为右队列qr,我们规定ql不为空时,ql.top()为中位值,记为mid,对于push(k),如果k>mid,则将k压入右边优先队列qr,如果k<=mid怎将其压入左边优先队列ql,然后将左右两个队列做平衡处理。pop()则只需将ql.top()的值弹出后做平衡处理即可。这种
阅读全文
posted @
2012-10-09 12:32
知识天地
阅读(387)
推荐(0) 编辑
八皇后问题N种解法(转)
摘要:原文地址:http://www.cnblogs.com/codingmylife/archive/2012/10/04/2711839.html 主要包括全排列和回溯两类,其中全排列可以递归与非递归,回溯也可以递归与非递归。于是加一起有4种解法。#include <iostream>#include <algorithm>using namespace std;template <size_t N> struct ArraySizeHelper {char _[N];};template <typename T, size_t N> ArrayS
阅读全文
posted @
2012-10-08 11:06
知识天地
阅读(523)
推荐(0) 编辑
Hulu 2013年校招笔试题目及答案求解(转)
摘要:9月27日于清华,笔试题目如下,我想说题目真心不错,可是自己确实太sb,做得实在是太烂,于是只好把题目放到网上,求答案大题:1)找一个数组中前k小的数。2)使用非递归求解8皇后问题,列出所有的解。3)作业调度问题
阅读全文
posted @
2012-10-08 10:49
知识天地
阅读(419)
推荐(0) 编辑
递归算法学习系列之八皇后问题
摘要:1.引子 中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每走一步都更靠近目标结果一些,直到遇到障碍物,我们才考虑往回走。然后再继续尝试向前。通过这样的波浪式前进方法,最终达到目的地。当然整个过程需要很多往返,这样的前进方式,效率比较低下。2.适用范围 适用于那些不存在简明的数学模型以阐明问题的本质,或者存在数学模型,但是难于实现的问题。3.应用场景 在8*8国际象棋棋盘上,要求在每一行放置一个皇后,且能做到在竖方向,斜方向都没有冲突。国际象棋的棋盘如下图
阅读全文
posted @
2012-10-01 09:37
知识天地
阅读(306)
推荐(0) 编辑
美国面试之旅——Google面试(转)
摘要:这几天宅着人都变懒了,还是更新一下日志吧。Google是我面试的第二站。18号面完MS,19号从Seattle飞到San Jose,一切都很顺利。值得一提的是美帝的飞机上是可以用wifi上网的,可惜不免费。面试安排在21号,所以20号可以自由活动,我决定提前去Google Campus里踩点+蹭饭。Google的Campus也很大,building外放着免费的自行车,让人们可以很方便地在园区里穿梭。在42号楼等张懿的时候,我还发现building的玻璃门上贴着很多通知,各种公司组织的活动,例如免费观看电影什么的,真不错。中午和张懿在Google的其中一家餐厅吃海鲜火锅。在这里吃饭都是免费的,早
阅读全文
posted @
2012-09-28 23:10
知识天地
阅读(788)
推荐(0) 编辑
美国面试之旅——面试经验分享
摘要:鉴于前几篇日志仅仅是分享了面试的经历,并没有太多实质性的“有用信息”(当然面试流程,公司概况等等信息其实也是有点用的,不过远远不够),如果不写一篇有用一点的日志,估计要遭大家扔鸡蛋了。很少有人国内毕业直接申请国外的公司,一般都是先去国外读书,然后找工作。或者加入该公司的中国分公司,再Transfer过去。因此我想总结一下这3个月来的面试经验,希望能给那些想毕业直接出国工作的同学一点实质性的帮助。==================================================================1. 申请申请一家公司是有一定技巧的。首先,无论任何都要找到一个人帮你
阅读全文
posted @
2012-09-28 22:59
知识天地
阅读(844)
推荐(0) 编辑
清华生获Facebook美国总部聘书(转)
摘要:美国知名社交网站facebook要来中国高薪挖人的消息已经在业界风传一段时间。昨天,清华大学首届“姚班”学生、今年即将博士毕业、因为杰出的编程才能江湖人称“楼教主”的楼天城亲口向记者证实,他早在一年前就已经拿到了facebook的offer(聘任通知书),被邀请去其位于硅谷的总部工作。■楼天城因杰出的编程才能获过多项大奖 美国知名社交网站facebook要来中国高薪挖人的消息已经在业界风传一段时间。昨天,清华大学首届“姚班”学生、今年即将博士毕业、因为杰出的编程才能江湖人称“楼教主”的楼天城亲口向记者证实,他早在一年前就已经拿到了facebook的offer(聘任通知书),被邀请去其位于硅谷.
阅读全文
posted @
2012-09-28 18:51
知识天地
阅读(376)
推荐(0) 编辑
美国面试之旅——Facebook面试(转)
摘要:郑重声明:1. 本人由于跟每一家公司都签署了保密协议,无法透露任何具体的“有用信息”,如具体的面试题目,被问到的具体问题等等,敬请见谅。尤其是Facebook的保密协议非常狠,以下是原文摘抄:“Applicant will keep in strict confidence all information (whether of technical, business or other nature) observed by Applicant while onsite or disclosed to Applicant by Facebook or any of its employees,
阅读全文
posted @
2012-09-28 18:45
知识天地
阅读(1009)
推荐(0) 编辑
字符串的全排列和组合算法(转)
摘要:全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处,欢迎大家指出。首先来看看题目是如何要求的(百度迅雷校招笔试题)。一、字符串的排列用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba一、全排列的递归实现为方便起见,用123来示例下。123的全排列有123、132、213、23
阅读全文
posted @
2012-09-25 23:34
知识天地
阅读(1625)
推荐(0) 编辑
Facebook 面试
摘要:第一,荧屏电话交谈或网络面试初试时,最典型的方式往往是面试官与求职者进行45分钟的交谈。这种方式可以帮助面试官追踪了解应试者在他们专业领域的普遍状况。面试官会向求职者提出有关求职者个人简历、技能、行为动机、兴趣等相关的有趣问题。但是,更多的时间将花在编程实践方面。面试官将会给求职者发送一条链接,打开此链接后,面试官将要求求职者解决相关的编程问题。卡洛斯的应对技巧:“就电话交谈方式而言,求职者一定要确保你在一个安静的位置,而且还要有良好的互联网链接。而且还要准备好双耳式耳机。我已经忘记了我第一次接受Facebook面试的具体情况了,我只知道当时我必须一边输入代码,一边将耳机夹在肩和耳朵之间,就像
阅读全文
posted @
2012-09-22 01:30
知识天地
阅读(573)
推荐(0) 编辑