arrays - 排列数组使得所有邻居都被改变

标签 arrays algorithm array-algorithms

我有这个圆形数组,我需要以某种方式排列它,以便每个元素的两个相邻元素都发生变化。

例子:

1 2 3 4 5 

成为

3 1 4 2 5

限制是数组至少需要5个元素,否则不可能。

长期以来一直试图解决它,我确定它有一个名字,但我没有运气在网上找到答案。

最佳答案

这其实很容易解决,你只需要找到一些对数组中奇数和偶数个元素都有效的策略:

首先选择偶数位置的所有数字,然后选择奇数位置的第一个数字,接着选择奇数位置的最后一个数字,最后选择奇数位置的其余数字。

12345 变为 13524,因此它适用于奇数个元素。

123456 变为 135264,因此它适用于偶数个元素。

0123456789 变成 0246819357,另一个例子。

关于arrays - 排列数组使得所有邻居都被改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49407586/

相关文章:

jquery - 使用带有通配符的 jquery grep 搜索对象数组

php - 如何在php中映射一个数组

algorithm - 有什么方法可以使用单个循环比较数组中的每个元素吗?

python - 数组的所有排列,其中数组中的每个元素必须按0到n之间的范围递增

c - 在 C 中查找 malloc() 数组长度?

javascript - 如何在 Angularjs 中将对象插入数组的数组中

c++ - 在 std::vector 和 std::unordered_map 之间进行选择以在少数项目中进行搜索?

c++ - 如何从 multimap 中删除特定的重复项?

algorithm - 如何判断两个 glob 模式中哪一个更通用

algorithm - 中位数算法的中位数 : why divide the array into blocks of size 5