【发布时间】:2016-01-28 19:10:18
【问题描述】:
假设我有一个大小在 700.000 到 800.000 之间的数组,我需要对其进行迭代以完成一些奇特的任务。
对于“相同的偶数和奇数位置”我的意思是:
[0,0,1,1,2,2,3,3] // even and odd are the same
[0,1,1,1,2,2,3,3] // even and odd are not the same (arr[0] and arr[1] are differents)
[0,0,1,1,2,2,3] // even and odd are not the same (last value missing)
如果偶数和奇数位置的值相同,我需要将此函数应用于每个值:
transition_left_right << i*@maxS
如果偶数和奇数不同,我必须将此函数应用于每个偶数值:
transition_left << i*@maxE
这对每个奇数值:
transition_right << i*@maxO
最快的方法是什么? (无需多次迭代巨大的数组)。最好是 1 次迭代...
【问题讨论】:
-
“偶数和奇数”是什么意思?你的意思是
arr[0]等于arr[1],arr[2]等于arr[3],等等,还是你的意思是别的?请编辑您的问题以包含示例输入和预期输出。 -
@Jordan:已编辑。希望问题更清楚。是的,我的意思是你写的
-
你的问题还是有点不清楚。你是指这些中的哪一个? A. 如果 any 偶数-奇数对不相等,则将第二个函数应用于 所有 个偶数值,将第三个函数应用于 所有 个奇数值,并且否则将第一个函数应用于 all 值;或 B. 对于所有奇偶对,如果给定的奇偶对不相等,则仅将第二个函数应用于该偶数值,将第三个函数应用于该奇数值,否则将第一个函数应用于该偶数值,并且只有奇数?
-
如果只有一对不同,适用于两个不同的功能!