博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为了工作必须弄死面试算法题
阅读量:6093 次
发布时间:2019-06-20

本文共 675 字,大约阅读时间需要 2 分钟。

1.蓄水池抽样问题

'''经典面试题分析:蓄水池抽样.题目:要求从N个元素中随机的抽取k个元素,其中N无法确定。只能扫描一次数据''''''分析:1.如果题目的N给定了,那么算法是把1到N这些整数shuffle一下,  然后按照这个index取前k个即可.效率是O(N**2)的.但是由于只读取了k次数据.  当读取数据一次很慢时候,这个效率可以.2.回归这个题目,他要求N无法确定.  只需要:  1.把前k个数按顺序放一个数组里面.  2.对于第k+1个数.randint(1,k+1)如果rand出来的数在(1,k)里面,那么k+1位置的数与    数组中rand出来的这个index的数交换.  3.后面类似.对于第k+i个数就randint(1,k+i)............  所以:一共randint跑了N次.数据也只扫描了一次.'''import randomdef savirior_sampling(data,k):#从data里面抽样k个元素,data这里用数组来模拟    output=data[:k]    #模拟不知道数组的长度所以用try来做    index=k    while 1:                try:                                  obj=random.randint(0,index)            if obj 
View Code

 

转载于:https://www.cnblogs.com/zhangbo2008/p/8684109.html

你可能感兴趣的文章
Android主线程、子线程通信(Thread+handler)
查看>>
gitlab配置邮箱
查看>>
Win10桌面奔溃怎么办?雨林木风Win10奔溃解决方法教程
查看>>
mysql Inoodb 内核
查看>>
Redis 基础
查看>>
UITextField的returnkey点击事件
查看>>
特殊字体引用
查看>>
owlcar 用法心得 自定义导航
查看>>
数据结构 学习笔记03——栈与队列
查看>>
DB2 OLAP函数的使用(转)
查看>>
数学之美系列二十 -- 自然语言处理的教父 马库斯
查看>>
Android实现自定义位置无标题Dialog
查看>>
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>