作业帮 > 综合 > 作业

这是一道Java面试题,认证知道该怎么回答?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 08:55:57
这是一道Java面试题,认证知道该怎么回答?
将1-1000个随机数不重复的放到长度为n的数组中,要考虑哪些问题?
实现的方法很多,所有要考虑的问题是效率问题!
最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机
数比较,如果重复,就重新产生.这是个很笨的方法,且比较次数呈线性增长,越往后次数越多
你考虑先从1-1000中随机选取n个数,在随机放入的数组,效果是一样,当减少了比较的环节,效率高很多
再问: 那从1-1000中随机选取n个数,这个该怎么做呢?
再答: 把1-1000放入集合,随机生成下标取值并删除,删除是保证下次取值不重复