这是 this post 的新版本为了将编程问题与概率问题分开。
我想存储一些例如数组中 25 个随机生成的 1 到 365 之间的数字。但我需要跟踪重复项。这是我的想法:
创建 4 个数组:一个主数组、一个用于 2 个重复项的数组、一个用于 3 个重复项的数组和一个用于 3 个以上重复项的数组
将生成的每个数字一一添加到主数组中。但在此之前,请循环遍历数组以查看它是否已在其中。如果是,请将其添加到第二个数组,但在此之前重复上述过程,依此类推
在该过程结束时,我可以计算每个数组中的非空值,以了解我有多少个唯一数字,有多少个出现了两次等
这似乎不是一个非常有效的算法。有什么改进建议吗?
我建议的方法可以被认为是大 O(n) 即线性吗?
最佳答案
为什么要使用数组? HashMap 或其他映射结构似乎更有意义。这是我的做法。
- 实例化一个新的、从生日到整数的空 HashMap
- 生成随机生日。
- 检查生日是否在 HashMap 中。如果不是,则添加值“1”。如果是的话,请在该生日时增加该值。
现在,您可以获取 HashMap 中键的数量生成的唯一日期的数量,以及有关值中重复项数量的任何信息。
关于java - 考虑重复,在数组中存储随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5002016/