python-3.x - 使用 Python 在另一个列表中搜索列表
问题描述
我正在尝试使用 Python 编写子列表搜索算法。
供参考: https ://www.geeksforgeeks.org/sublist-search-search-a-linked-list-in-another-list/
这是我的代码:
def sublist(arr1,arr2):
i = 0
j = 0
k = 0
if len(arr1) == 0:
print('List1 Empty')
if len(arr2) == 0:
print('List 2 Empty')
for j in range(0,len(arr2)):
for i in range(0,len(arr1)):
if arr1[i] != arr2[j]:
break
while arr1[i] == arr2 [j]:
if i == len(arr1) - 1:
return True
i = i + 1
j = j + 1
if i == len(arr1):
return False
return False
我确信这段代码可以优化并降低时间复杂度。由于while循环,复杂度是否比O(m * n)增加?初学者在这里
解决方案
下面比较 to 的第一部分arr2
,arr1
以确定它们是否相等。如果是这样,或者对某个偏移量的任何递归调用都arr2
返回 true,则返回 true。否则,如果在任何时候原始的子列表arr2
短于arr1
,则返回 False。
def sublist(arr1, arr2):
if len(arr2) < len(arr1):
return False
return arr1 == arr2[:len(arr1)] or sublist(arr1, arr2[1:])
推荐阅读
- powershell - Renaming incrementing integer name to incrementing integer
- c# - Post.Cast<> 升级后不再工作
- git - 将本地未提交的更改移动到新分支
- python - 将这两列从熊猫中的不同数据框中相乘时得到 NaN
- php - 发布到远程 WordPress 站点导致多个元键/元值
- postgresql - postgres 使用可选的键值对构建 json 对象
- javascript - 如何使用 parseFloat 允许逗号?
- python - 未找到“用户创建”的 DRF 反向
- python - Python csv reader for row in reader给出语法错误
- javascript - 无法分配给字符串“”的只读属性“0”