gpt4 book ai didi

arrays - 圆形阵列中的间隔元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:46:54 26 4
gpt4 key购买 nike

这是我遇到的一个有趣的问题,我觉得应该有一个优雅的、可证明的解决方案,但我还没有完全能够得到它。我将其定义为:

Define a function that takes as input an array of N elements and a positive integer R, and returns a circular array (or an array that you treat as circular) where no two identical elements are less than R apart, or a null if no such ordering is possible.

所以 f([a,b,d,c,a,d,k,a,d], 3) 可能返回 [a,b,d,a,k ,d,a,c,d],但是 f([a,b,d,c,a,d,k,a,d,a,a], 3)将返回 null。如果两个元素之间有 R-1 元素,我将两个元素定义为 R apart,因此在数组 [x,a,b,y]xy 一侧相距 3,另一侧相距 0。

我觉得这也是一个很好的面试问题。

最佳答案

  1. 将数组拆分为相同元素的组(通过排序或使用哈希表)。
  2. 找到最大的一组。如果其大小大于 floor(N/R),则返回 null。
  3. 如果最大组的大小恰好等于 N/R,则对组列表进行分区(部分排序),以便所有大小为 N/R 的组出现首先在以下步骤中。
  4. 对于每个组,将其元素放入结果数组(循环缓冲区),将索引递增 R,如果可能的话。如果 RN 不是互质的,有时 - 在 N/GCD(N,R) 递增之后 - 索引将指向已使用的元素。在这种情况下,将索引增加 R+1 而不是 R 并继续。

关于arrays - 圆形阵列中的间隔元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9688543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com