python - 确定列表是否是周期性的python
问题描述
我很想找到一个函数来检查给定列表是否是周期性的并返回周期性元素。列表不会加载,而是动态生成和添加它们的元素,如果这个注释无论如何都会使算法更容易。
例如,如果函数的输入为[1,2,1,2,1,2,1,2]
,则输出应为 (1,2)。
我正在寻找一些关于实现这一目标的更简单方法的提示和提示。
提前致谢,
解决方案
这个问题可以通过字符串匹配的Knuth-Morris-Pratt算法来解决。在继续之前,请熟悉失败链接的计算方式。
让我们将列表视为一个值序列(如字符串)。让列表/序列的大小为n
.
那么你也能:
找到列表中最长的正确前缀的长度,这也是一个后缀。设最长正确前缀后缀的长度为
len
。如果
n
可被 整除n - len
,则列表是周期性的,并且周期是大小的len
。在这种情况下,您可以打印第一个len
值。
更多信息:
推荐阅读
- python-3.x - 无法在 nginx docker 容器中安装 python 3.8.5 版本
- mysql - 使用 sequelize 和 node 查询正则表达式时出现语法错误
- c# - 用于相机旋转的滑动触摸输入无法正常工作
- android - 专注于 TextField 时屏幕底部出现黑色空间
- r - 从 R 中彼此相差 10 秒内的数据帧中删除时间值
- asp.net-mvc - 无法将类型“Kentico.Web.Mvc.IHtmlContentProxy”隐式转换为“System.Web.HtmlString”
- php - 将 WordPress 用户后端中创建的附加字段添加到 woocommerce admin-new-order 电子邮件
- python - 如何编写一个函数来获取一列中患者的最大体重,持续 3 周?
- jdbc - Ibatis 2.3.0 ResultGetter#getInt 改变 ResultGetter#wasNull 的行为
- azure-devops - 验证用户是否被删除或不使用 SAML 令牌