在JAVA中也问过类似的问题,但有人可以帮助我改进代码吗:并解释一下我的代码的时间复杂度和空间复杂性。我的代码检查两个数组是否相互轮换:
list1 = [1, 2, 3, 4, 5, 6, 7]
list2b = [4, 5, 6, 7, 1, 2, 3]
is_rotation(list1, list2b) 应返回 True。
list2c = [4, 5, 6, 9, 1, 2, 3]
is_rotation(list1, list2c) 应返回 False。
我的代码:
def is_rotation (list1,list2):
i = 0
j = 0
k = 0
result = True
if len(list1) != len(list2):
return False
while i < len(list1) -1 and j < len(list1) -1:
if list1[i] == list2[j]:
i = i +1
j = j +1
break
elif list1[i] > list2[j]:
j = j +1
else:
i = i +1
else:
return False
for l in range(i,len(list1)):
if i == j:
if list1[i] != list2[j]:
return False
elif list1[i] != list2[j] or list2[i] != list1[k]:
return False
else:
i = i +1
j = j +1
k = k +1
return result
动漫人物
大话西游666
扬帆大鱼
饮歌长啸
相关分类