摘要:
自从做完leetcode上的三道关于二分查找的题后,我觉得它是比链表找环还恶心的题,首先能写出bugfree代码的人就不多,而且可以有各种变形,适合面试的时候不断挑战面试者,一个程序猿写代码解决问题的能力都能在这个过程中考察出来。在有序数组中寻找等于target的数的下标,没有的情况返回应该插入的下... 阅读全文
posted @ 2015-03-24 19:52
Jessica程序猿
阅读(920)
评论(0)
推荐(1)
摘要:
18.9 随机生成一些数字并传入某个方法。编写一个程序,每当收到新字符数字时,找出并记录中位数。类似:设计一个数据结构,包括两个函数,插入数据和获得中位数解法:一种解法是使用两个优先级堆:一个大根堆,存放小于中位数的值,以及一个小根堆存放大于中位数的值。这会将所有元素大致分为两半,中间的两个元素位于... 阅读全文
posted @ 2015-03-24 16:30
Jessica程序猿
阅读(238)
评论(0)
推荐(0)
摘要:
18.7 给定一组单词,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。解法:原题给定字符串,以及一个字典,判断字符串是否能够拆分为字段中的单词。例如,字段为{hello,world},字符串为hellohelloworld,则可以拆分为hello,hello,world,... 阅读全文
posted @ 2015-03-24 15:48
Jessica程序猿
阅读(288)
评论(0)
推荐(0)
摘要:
18.6 设计一个算法,给定10亿个数字,找出最小的100万个数字。假定计算机内存足以容纳全部10亿个数字。解法:方法1:排序按升序排序所有的元素,然后取出前100万个数,时间复杂度为O(nlog(n))方法2:大顶堆我们可以使用大顶堆来解题。首先,为前100万个数字创建一个大顶堆然后,遍历整个数列... 阅读全文
posted @ 2015-03-24 12:22
Jessica程序猿
阅读(148)
评论(0)
推荐(0)
摘要:
18.5 有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(也即相隔几个单词)。有办法在O(1)时间里完成搜索操作吗?解法的空间复杂度如何?解法1:我们假设单词word1和word2谁在前谁在后无关紧要。要解决此题,我们需要遍历一次这个文件。在遍历期间,我们会记下最... 阅读全文
posted @ 2015-03-24 11:46
Jessica程序猿
阅读(921)
评论(0)
推荐(0)
摘要:
18.2 编写一个方法,洗一副牌。要求做到完美洗牌,换言之,这幅牌52!种排列组合出现的概率相同。假设给定一个完美的随机发生器。解法:假定有个数组,含有n个元素,类似如下:[1][2][3][4][5]利用简单构造法,我们不妨先问自己,假定有个方法shuffle(...)对n-1个元素有效,我们可以... 阅读全文
posted @ 2015-03-24 09:25
Jessica程序猿
阅读(274)
评论(0)
推荐(0)
摘要:
18.1 编写一个函数,将两个数字相加,不得使用+或其他算术运算符。int add(int a,int b){ if(b==0) return a; int sum=a^b; int carry=a&b)<<1; return add(sum,carry);} 阅读全文
posted @ 2015-03-24 09:13
Jessica程序猿
阅读(148)
评论(0)
推荐(0)

浙公网安备 33010602011771号