相关疑难解决方法(0)

检查列表是否是另一个与重复项一起使用的列表的轮换

我有这个函数来确定列表是否是另一个列表的轮换:

def isRotation(a,b):
  if len(a) != len(b):
    return False

  c=b*2
  i=0

  while a[0] != c[i]:
    i+=1

  for x in a:
    if x!= c[i]:
      return False
    i+=1

  return True
Run Code Online (Sandbox Code Playgroud)

例如

>>> a = [1,2,3]
>>> b = [2,3,1]
>>> isRotation(a, b)
True
Run Code Online (Sandbox Code Playgroud)

如何使用重复项进行此操作?例如

a = [3,1,2,3,4]
b = [3,4,3,1,2]
Run Code Online (Sandbox Code Playgroud)

它可以及时完成O(n)吗?

python arrays algorithm time-complexity

18
推荐指数
3
解决办法
5264
查看次数

是否有一个算法(名称,实现)给出两个相同排序/内容但不同的起始项目以测试相等性的列表?

当然有一些东西,但谷歌搜索没有给我我正在寻找的东西.也许是因为我不知道要注意的算法的名称?

基本上,我有两个内容和大小相同的列表.

List1: {10, 30, 2, 4, 4}
List2: {4, 4, 10, 30, 2}
Run Code Online (Sandbox Code Playgroud)

请注意,两个列表的顺序相同.即:List2可以看作是从List1中的上一个位置到最后一个位置的开始,并且继续从List1的开始迭代直到返回到起始位置.

List1: {10, 30, 2, 4, 4} 10, 30, 2
                   |  |  |   |   |
List2:            {4, 4, 10, 30, 2}
Run Code Online (Sandbox Code Playgroud)

然后将这两个列表视为等效.

以下两个列表不是:

List1: {10, 30, 2, 4, 3} 10, 30, 2
                   |  |  X   X   |
List2:            {4, 4, 30, 10, 2}
Run Code Online (Sandbox Code Playgroud)

更新

我现在正在做的是将List1连接到自身并在其中搜索List2.

我觉得这个效率不高.

假设我想迭代每个列表一次?

更新

好吧,最后我使用了algo描述:检查字符串是否是另一个字符串的旋转而不连接 并将其调整为我的数据类型.

c# rotation

1
推荐指数
1
解决办法
247
查看次数

标签 统计

algorithm ×1

arrays ×1

c# ×1

python ×1

rotation ×1

time-complexity ×1