摘要: http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html 今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。 解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k)。 解法2.. 阅读全文
posted @ 2012-08-27 17:25 waytofall 阅读(791) 评论(0) 推荐(0) 编辑
摘要: 谷歌(Google)算法面试题1.谷歌面试题:给定能随机生成整数 1 到 5 的函数,写出能随机生成整数 1 到 7 的函数。 回答:此题的关键是让生成的 1 到 7 的数出现概率相同。 只要我们可以从 n 个数中随机选出 1 到 n 个数,反复进行这种运算,直到剩下最后一个数 即可。 我们可以调用 n 次给定函数,生成 n 个 1 到 5 之间的随机数,选取最大数所在位置即 可满足以上要求。 例如 初始的 7 个数[1,2,3,4,5,6,7]. 7 个 1 到 5 的随机数[5,3,1,4,2,5,5] 那么我们保留下[1,6,7], 3 个 1 到 5 的随机数[2,4,1] 那么我们保 阅读全文
posted @ 2012-08-27 17:03 waytofall 阅读(2515) 评论(0) 推荐(0) 编辑
摘要: http://smallbridge.sinaapp.com/96002.html1、一个随机数产生器以概率p生成0,以概率(1-p)生成1,怎样生成等概率的0和1?如果用这个随机数产生器产生两个位,出现00的概率为,出现01的概率为,出现10的概率为,出现11的概率为。看到没有,出现01和10的概率相等。那么我们就可以用这个随机数生成器每次产生2位,直到产生的是01或者10,当为01时,输出0,当为10时输出1。问题扩展:还是给这么一个随机数产生器,要求等概率地产生。解法1:每次产生n位,当为仅第一位是1,其他是0时输出1,当仅有第二位是1,其他位是0是输出2,……当仅有第n位是1,其他是0 阅读全文
posted @ 2012-08-27 16:21 waytofall 阅读(1337) 评论(0) 推荐(0) 编辑