【发布时间】:2020-10-08 21:12:35
【问题描述】:
问题
- 例如有整数。 i = ,代表 49 个数字 (102,103,...150)
- 有一个空数组 a[60],所以大小为 60 个空闲“槽”
- 需要一个算法,如何将 49 个数字尽可能均匀地分布到 60 个插槽的数组中,很明显有些数字必须重复才能填满所有 60 个插槽,正好是 12 个
- 没有空闲内存可以预先计数(a[] 也可以是 10000 的大小),算法必须像流一样工作,因此它将返回特定索引 a[0]、a[1 的数字], a[2],... 当它要求时。
- 它必须很快,因为消费者有一个时间段来获取值
示例
在以下示例中,所有内容都对齐得很漂亮
i = <10, 14> => 5 numbers
a[10] => 10 slots
预期结果
a[0] = 10
a[1] = 10
a[2] = 11
a[3] = 11
a[4] = 12
a[5] = 12
a[6] = 13
a[7] = 13
a[8] = 14
a[9] = 14
希望我已经清楚地描述了它以理解:-),
我已经做了一些实现,但它并没有像我希望的那样均匀分布
感谢所有答案或至少指出正确的方向
【问题讨论】:
-
类似line drawing algorithm 的东西应该可以工作,其中
x是a[]中的项目数,y是该范围内的值数。 -
顺便说一句,在 102 到 150 之间有 49 个数字。这对于这个问题并不重要,但重要的是如果您的代码有同样的错误。
-
谢谢,你是对的,但是我现在不能编辑,因为需要通过堆栈溢出合并帐户
-
感谢您对算法的建议。我要看看它是否适合