栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用杂耍算法旋转数组

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用杂耍算法旋转数组

GCD如何确定旋转阵列所需的周期数?

因为内部循环以的步长递增

d
,并在返回起点时停止,即总跨度是的倍数
n
。那是
LCM(n, d)
。因此,该循环中的元素数为
LCM(n, d) /d
。这样的循环总数为
n / (LCM(n, d) / d)
,等于
GCD(n, d)

为什么一旦完成一个循环,就从下一个元素开始新的循环,即下一个元素不能已经成为已处理循环的一部分?

否。内部循环以的步长递增

d
,是的倍数
GCD(n, d)
。因此,当我们开始第-
i
个周期时,我们需要
(k*GCD + z) % n ==i
(for
0 <= z < i
)命中。这导致
(k*GCD) % n == (i - z)
。这显然没有解决方案。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号