You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效比较两个循环链表(环形列表)并判断它们是否等价?

判断两个环形List是否等价的高效方法

循环/环形(cycle/ring)是一种可表示为List的数据结构,其尾部与头部相连。
旋转List不会改变其含义,因为循环可以从任意元素开始读取。
只要元素序列保持不变,包含n个元素的循环可以有n种不同的写法,因为恰好存在n种可能的旋转方式。

例如,以下List均表示同一个环形结构:

[0, 1, 2, 3]
[1, 2, 3, 0]
[2, 3, 0, 1]
[3, 0, 1, 2]

我需要找到一种高效的方法来判断给定的两个循环是否等价——它们可能是同一结构但以不同旋转形式呈现。

我已经考虑了一种“朴素”方法:

  • 通过Set检查两个列表的元素组成是否一致。
  • 如果元素组成相同,则按以下方式检查元素序列:
    • 遍历list2,找到与list1首个位置相同的元素;
    • 逐个元素检查list2是否为list1的旋转版本,需使用取模函数让list2可从索引0重新开始遍历。

希望Java工具类中已有现成的更高效方案来实现我的需求。

内容的提问来源于stack exchange,提问作者Zartof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:45:38