Done
文章平均质量分 67
beiyeqingteng
这个作者很懒,什么都没留下…
展开
-
一道有意思的Amazon的概率面试题[# 71]
该问题包含两个子问题:子问题1:给你一个骰子,你扔到几,机器将会给你相应的金钱。比如,你扔到6,机器会返回你6块钱,你扔到1,机器会返回你1块钱。请问,你愿意最多花多少钱玩一次?子问题2:在子问题1里,你只能扔一次,现在呢,可以给你两次机会,但是你自己也可以选择只扔一次。但返回的钱以最后一次为准。比如,第一次你扔了6,你把第二次机会就放弃了,这样机器会返给你6块钱。但是,假设你第一次扔原创 2012-05-06 13:55:26 · 9141 阅读 · 0 评论 -
快速排序算法递归和非递归实现 [# 29]
Quick sort algorithm is quite like the merge sort, cause both of them use the idea of divide-and-conquer, but be aware, quick sort doesn't conquer it subproblems, cause when the problem is divided int原创 2010-07-18 04:56:00 · 900 阅读 · 0 评论 -
两两反转单向链表 (reverse a singly linked list in pair ) [#22]
两两反转单项链表就是把每两个数反转一次。如下:A -> B -> C ->D -> E -> F ->G -> H -> I 两两反转后变为 B -> A -> D ->C -> F -> E ->H -> G -> I分析:我们需要两个“指针”指着当前要反转的两个值。两两反转后,我们还需要记录下一个的值,换句话说,我们反转 A 和 B 后, 需要记录 C 值,我们才能够不断向下走,原创 2011-12-07 12:12:07 · 2653 阅读 · 3 评论 -
判断一个数字是否是回文
问题:给一个数字,判断该数字是否是回文。比如 1221是回文,而123不是。分析:判断一个数字是否是回文,我们可以先把它转成字符串,然后根据回文“对称”的特性进行判断:查看第 x 个字符是否与第 n - x + 1 字符是否相等 (x 从1开始,n/2 结束, n 是指数字长度)。但是,这道题因为是数字,有一种更好的解法。即根据原始数字,通过数学方法构建出它的回文数字,如果原始数字大小原创 2012-04-19 07:42:49 · 7290 阅读 · 2 评论 -
Trie的java实现
关注Trie 这种结构已经很久,Trie有一个很有趣的用途,那就是自动提示。而且,前不久在一次面试里,也需要用Trie来解答。所以,在此对这个数据结构进行总结。Trie,又称单词查找树或键树,是一种树形结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它有3个基本性原创 2011-11-17 14:01:05 · 9809 阅读 · 1 评论 -
归并排序(Merge sort)算法
Merge sort 算法的思想就是把数组分成更小的数组,合并的时候再排序。由于是二分,所以总的时间为 T(n) = 2 T(n/2) + \theta (n) = O(n * lgn)。public void mergeSort(int[] array, int start, int end) { if (start < end) { int mid = start + (end原创 2010-07-15 07:07:00 · 2111 阅读 · 0 评论 -
判断两个链表是否相交
问题:给出两个单向链表的头指针,比如h1、h2,判断链表是否相交,如果不相交返回NULL;如果相交,返回指向第一个相交节点的指针。时间复杂度控制在O(n)。分析:如果两单向链表相交的话,一定是Y型相交,不可能出现X型,弄清楚这点后接下来的工作就是:(1)先找到h1,h2的最后一个节点L1和L2,同时记录节点数量a,b;(这里假设 a > b)(2)判断最后一个节点是否相同;原创 2012-05-25 23:52:25 · 1780 阅读 · 0 评论 -
一亿数据获取前100个最大值(利用quicksort的原理实现)
前言:刚刚在CSDN上看到一个网友利用最小堆实现 “ 获取一亿数据获取前100个最大值” 。原帖请看:http://blog.csdn.net/yjflinchong/article/details/7533972。 然后自己利用quicksort的原理也写了一个程序来解决那个问题。通过测试,基于quicksort原理的方法平均运行时间是1.264秒,基于最小堆方法的平均运行时间是0.288秒原创 2012-05-04 12:57:03 · 6703 阅读 · 8 评论