热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

有效地确定排列的奇偶性

我认为您可以通过简单地计算循环分解在O(n)时间和O(n)空间中做到这一点。

您可以通过简单地从第一个元素开始并遵循路径直到返回起点来计算O(n)中的循环分解。这为您提供了第一个周期。沿着路径将每个节点标记为已访问。

然后重复下一个未访问的节点,直到所有节点都标记为已访问。

长度为k的循环的奇偶校验为(k-1)%2,因此您可以简单地将发现的所有循环的奇偶校验加起来,以找到整体置换的奇偶校验。

节省空间

将节点标记为已访问的一种方法是在访问数组时将N添加到数组中的每个值。然后,您将能够进行最后的整理O(n)传递,以将所有数字恢复为原始值。





推荐阅读
author-avatar
vm经典全屏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有