algorithm - 从数组中检索与累积参数相关的元素

标签 algorithm

假设有 2 个元素数组,函数调用将返回其中的元素。每次执行检索时,将从数组 1 中检索 8 个元素,而从数组 2 中检索 2。要检索的元素由提供的数字指示,假设列表 1 有 35 个元素,列表 2 有7、情况会是这样的:

Assume the 2 arrays are:

array 1: 0, 1, 2, 3, 4, ..., 35
array 2: 0, 1, 2, 3, 4, 5, 6

number provided      elements from array 1              elements from array 2
1                    0,  1,  2,  3,  4,  5,  6,  7      0, 1
11                   8,  9,  10, 11, 12, 13, 14, 15     2, 3
21                   16, 17, 18, 19, 20, 21, 22, 23     4, 5
31                   24, 25, 26, 27, 28, 29, 30, 31     6
40                   32, 33, 34, 35                     0, 1
46                   0,  1,  2,  3,  4,  5,  6,  7      2, 3
56                   8,  9,  10, 11, 12, 13, 14, 15     4, 5
66                   16, 17, 18, 19, 20, 21, 22, 23     6
75                   24, 25, 26, 27, 28, 29, 30, 31     0, 1
85                   32, 33, 34, 35                     2, 3
...

每次检索完成时,返回的数字计数将添加到最后提供的数字成为下一个提供的数字。如果列表中的一个已经用完(剩余元素少于8),那么将从该列表中检索剩余的数字,下次它会重新从索引0开始检索元素,如传递数字31和40的情况.

问题是,当提供一个数字时,是否有办法确定在两个数组中的起始位置?例如当给出数字 40 时,我应该从列表 1 中的 32 开始,列表 2 中从 0 开始。像上面的情况一样,列表 1 每 5 次检索一次就用完,而列表 2 每 4 次检索一次就用完,但是由于提供的数字是基于关于检索到的数字的累计计数,当给定一个数字时,我如何确定这次从哪里开始?

这几天我一直在想这个问题,真的很沮丧。感谢您的帮助!

最佳答案

他们是一个循环。而一个循环会有total_num个数,我们可以从下面的代码中得到total_num: def get_one_cycle_numbers: n = len(a)/8 米 = 长度 (b)/2 g = gcd(n, m) total_num = len(a) * n/g + len(b) * m/g 返回 total_num 当我们得到提供的数字 num 时,我们只是 num = num % total_num 并模拟循环。 PS:希望我对这个问题有正确的理解。

关于algorithm - 从数组中检索与累积参数相关的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29739030/

相关文章:

algorithm - 地平线检测算法

c++ - 更新 std::set 以仅保留最小值

javascript - 在javascript中使用堆栈的前缀计算器

algorithm - 如何使用非单词标记识别文本中的单词?

python - 如何有效地确定一组点是否包含两个接近的点

ruby - 以深度优先顺序生成数组笛卡尔积的算法

algorithm - 如何使用KDTrees实现最近邻搜索?

c++ - 从 char 数组中删除条目

algorithm - 在插值搜索中计算中间值?

c - 如何在动态规划技术中从头开始打印最佳路径