社区
数据结构与算法
帖子详情
公司面试题100分求解!!
mostneed
2002-09-17 12:37:39
随机产生10万个数,要求维一,然后写到数据库中。用什么算法?
我的想法是先随机产生数,然后用快速查找算法在数据库中查找直到没有相同的,然后写入数据库中。
不知道行不行,希望大家给个最快的算法。
谢谢!!
...全文
43
16
打赏
收藏
公司面试题100分求解!!
随机产生10万个数,要求维一,然后写到数据库中。用什么算法? 我的想法是先随机产生数,然后用快速查找算法在数据库中查找直到没有相同的,然后写入数据库中。 不知道行不行,希望大家给个最快的算法。 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
孩皮妞野
2002-09-19
打赏
举报
回复
其实主要的时间就是花在写入数据库了。
除非数据库系统提供了特别的编程接口,你只好用SQL, 一次插入一个了。
从本质上讲你的问题就是从一个不重复的集合里抽取指定模的一个子集,saint的方法算是标准解法吧。
leojay
2002-09-19
打赏
举报
回复
A(1)=rnd*10 ;
A(n) = A(n-1) + rnd*10 + 1 ;
这样就一定不会重了。
最多再保存起来,打乱一下就好了。
saint001
2002-09-18
打赏
举报
回复
上概率是设计的从数组中顺序随机抽取若干个元素的算法
数组为A[1..N],N很大,抽取得的生成成的数组为X[M]
从1..N 中随机抽取数字i,得到随机数A[i],存入X[1],同时置换A[i]和A[N];
从1..N-1中随机抽取数字i,得到随机数A[i],存入X[2],同时置换A[i]和A[N-1];
从1..N-2中随机抽取数字i,得到随机数A[i],存入X[3],同时置换A[i]和A[N-2];
以此类推,直到生成M各随机数为止
非常容易实现,时间复杂度为O(M)
不过对于本题,空间复杂度为O(N),稍多些
令M=10E5,N=10E6,A[i]=i
school
2002-09-18
打赏
举报
回复
边产生随机数边排序插入,相同则不插入。
孩皮妞野
2002-09-18
打赏
举报
回复
你往下看啊! 我提供的另一个思路呢?
顺便说一下,即使是这两个也是不同的。你的i肯定是顺序,而我的i是乱序的。比如,如果数据表是这样的结构:
ID RAND_NUM
好了,这是我对第二个思路的实现:
#include <bitset>
#include <vector>
#include <algorithm>
void genenerate(std::vector<unsigned>& vu)
{
using namespace std;
bitset<10000000> bs;
while(bs.count()<100000)
bs[random(10000000)] = true;
vu.resize(100000);
for(unsigned i=0, j=0; i<bs.size() && j<100000 ; i++)
if(bs[i])
vu[j++]=i;
random_shuffle(vu.begin(),vu.end());
}
mostneed
2002-09-18
打赏
举报
回复
谢谢大家!
然后写入数据库呢?不回依次写如吧。有什么快的办法?
smokyrain
2002-09-17
打赏
举报
回复
如果是从实用角度看,根本不用找算法,如果对数字没有格式要求,直接设置此字段类型identity并且设为键值即可。
如果说算法的话,建议实用Hash散列将每次生成的数字扩散开,或是使用分段生成的方法生成。查找数据库的方法实在不可取,代价太大。
zhf0021
2002-09-17
打赏
举报
回复
up
bjay
2002-09-17
打赏
举报
回复
to: ALNG(?)
是不是我看错了,还是的确不明白?
10万个不同的数,你让它在10万个数中“随机”生成,和
for (i =0; i<100000; i++)
Insert into ... //这是一句SQL语句,
有什么不同?
djniulihao
2002-09-17
打赏
举报
回复
我同意ALNG(?)的算法
孩皮妞野
2002-09-17
打赏
举报
回复
复杂度O(N)。
如果要求数据有随机性,即排序后不一定是连续的数,可以用set, 或bitset, 先在bit_set装入100000个数[保证不同],然后放入一个vector中random_shuffle即可。
孩皮妞野
2002-09-17
打赏
举报
回复
#include <vector>
#include <algorithm>
void generate(std::vector<int>& container)
{
container.resize(100000);
for(unsigned i=0; i<100000; i++)
container[i]=i;
std::random_shuffle(container.begin(),container.end());
}
搞定
DaNiao
2002-09-17
打赏
举报
回复
那就换一家公司吧
mostneed
2002-09-17
打赏
举报
回复
可是别人不允许用数据库的功能,一定要用算法. :-<
newly_ignorant
2002-09-17
打赏
举报
回复
查找显然太慢了,利用数据库自身的功能
create 临时表(有唯一性约束的)
i=0
while i<1000
取一个随即数
插入到临时表
if 成功 then i=i+1
wend
临时表数据导入到数据库中
删除临时表
mostneed
2002-09-17
打赏
举报
回复
谢谢!! 还有什么算法吗?
各大软件
公司
面试--算法笔试题
各大软件
公司
面试--算法笔试题各大软件
公司
面试--算法笔试题
[第二部
分
]精选微软等
公司
结构+算法面试
100
题[41-60题]
此为我个人搜集整理的, 精选微软等
公司
数据结构和算法的面试
100
题[前41-60题], 此绝对值得你下载收藏。 ----------------------------- 网友yui评论,真是够多的了,从此,不用再看其它
面试题
.... 一句话,请享用。 July、2010/11.05. ----------------------------------------------- 其它资源,下载地址: [最新整理公布][汇总II]微软等数据结构+算法面试
100
题[第1-80题] http://download.csdn.net/source/2846055 1.[最新答案V0.3版]微软等数据结构+算法面试
100
题[第21-40题答案] http://download.csdn.net/source/2832862 2.[第1题-60题汇总]微软等数据结构+算法面试
100
题 http://download.csdn.net/source/2826690 3.[答案V0.2版]精选微软数据结构+算法面试
100
题[前20题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1版本,进行的校正与修正。 4.[答案V0.1版]精选微软数据结构+算法面试
100
题[前25题] http://download.csdn.net/source/2796735 5.[第二部
分
]精选微软等
公司
结构+算法面试
100
题[前41-60题]: http://download.csdn.net/source/2811703 6.[第一部
分
]精选微软等
公司
数据结构+算法经典面试
100
题[1-40题] http://download.csdn.net/source/2778852 更多资源,下载地址: http://v_july_v.download.csdn.net/ ------------------------------------------------------ 各位,若对以上
100
题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等
100
题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html
leetcode2-code_interview:LeetCodeLintCode题解,剑指offer题目,互联网
公司
面试,BAT外企等
面试题
leetcode 2 code_interview leetcode和lintcode的一些题目的解法 是剑指offer 是面试中遇到的有意思的题目总结,比如说BAT,intel,NVIDIA等
公司
面试的题目记录 包含了对传统排序算法的改进和应用总结 Leetcode Python / C++ 11 Solutions LeetCode Questions and Some of LintCode Questions. 用python和c++实现的leetcode和lintcode以及geeksForGeeks的题解 结构 string 字符串 28- Implement strStr() 实现找字串功能 lint158 anagrams 两个乱序字符串的比较 lint55 compare-string和group string都是同型题目 int79-LCS lintcode上的79题 寻找最长公共字串 lintcode 138-Subarray-Sum integer-arr 整型数组 值得回顾的题 41-first-missing-positive 01-Two-Sum
求解
第K
datax
面试题
_阿里巴巴
面试题
+参考答案!速来
【导读】本文是阿里巴巴自身技术专家们结合多年的工作、面试经验总结提炼而成的面试真题。通过这些
面试题
,还可以间接地了解技术大牛们出题思路与考察要点。面试要通过层层考验,刷题肯定是必不可少的。这一次
面试题
,不仅是知识的收获,还将间接地与技术大牛们做了直观的沟通,了解他们的出题思路与考察要点,并加以消化吸收。这对自己技术能力本身就是一种极大的提升。走上编程之路,不断丰富自己方能与世接轨,努力做最优秀的自...
Java中高级
面试题
总结(全面),程序员必备技能:时间复杂度与空间复杂度的计算
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几
分
心思,如果你再不努力,差距也只会越来越大。
面试题
多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过
面试题
去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的![外链图片转存中…(img-s7yLyhYS-1710789153053)]点击传送门。
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章