java - 考虑重复,在数组中存储随机值

标签 java arrays algorithm

这是 this post 的新版本为了将编程问题与概率问题分开。

我想存储一些例如数组中 25 个随机生成的 1 到 365 之间的数字。但我需要跟踪重复项。这是我的想法:

  • 创建 4 个数组:一个主数组、一个用于 2 个重复项的数组、一个用于 3 个重复项的数组和一个用于 3 个以上重复项的数组

  • 将生成的每个数字一一添加到主数组中。但在此之前,请循环遍历数组以查看它是否已在其中。如果是,请将其添加到第二个数组,但在此之前重复上述过程,依此类推

在该过程结束时,我可以计算每个数组中的非空值,以了解我有多少个唯一数字,有多少个出现了两次等

这似乎不是一个非常有效的算法。有什么改进建议吗?

我建议的方法可以被认为是大 O(n) 即线性吗?

最佳答案

为什么要使用数组? HashMap 或其他映射结构似乎更有意义。这是我的做法。

  1. 实例化一个新的、从生日到整数的空 HashMap
  2. 生成随机生日。
  3. 检查生日是否在 HashMap 中。如果不是,则添加值“1”。如果是的话,请在该生日时增加该值。

现在,您可以获取 HashMap 中键的数量生成的唯一日期的数量,以及有关值中重复项数量的任何信息。

关于java - 考虑重复,在数组中存储随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5002016/

相关文章:

arrays - 如何抑制数组中的重复项但保持顺序?

python - 图像大师 : Optimize my Python PNG transparency function

algorithm - 3D对称搜索算法

javascript - BigDecimal 在 GWT 编译的 JavaScript 中是如何表示的

java - 如何配置 spring 应用程序以在 aws 上使用 IAM 角色(在 AWS ECS 中运行)并在 dev env 上使用凭据?

java - 如何从 ArrayList 中提取特定数字?

javascript - 使用 jSTL 数组填充 javascript 数组

javascript - 如何在没有 ID (Java) 的 Selenium 中单击 Javascript 按钮?

C# 如果数组是按引用传递的,为什么参数数组必须用修饰符 ref 传递?

c++ - 为什么 alloca 两次返回相同的地址?