首页 > 解决方案 > 如何设计一个蛮力算法分组细胞?Python

问题描述

我必须找到一种方法将数组 X[ ] 和 Y[ ] 的单元格分组为具有相同字符的对。其中 X[] 具有随机排序的字符,为什么具有完全相同的 n 个字符。

这是我制作的代码

x = ["O", "L", "M", "S", "N", "J", "P", "T", "I", "R", "H", "G"]
y = ["S", "N", "H", "P", "T", "I", "O", "R", "L", "M", "G", "J"]

for i,char in enumerate(x):
    print(f"x[{i}] == y[{y.index(char)}]")

没什么大不了的,问题是我必须使用蛮力方法,设计一个算法来解决问题,然后制作一个更有效的算法,所以这是一种蛮力方法,我需要做一个更有效的方法吗?算法,或者这不是一种蛮力方法,我需要做一个?

标签: pythonalgorithmtime-complexitylookup-tables

解决方案


你的方法是蛮力。

为了更有效的方法,您需要使用字典

list.index必须按顺序检查所有元素,如果Y很大,这将很慢,而字典内部是一个哈希表,并且字典中的查找需要恒定数量的操作(摊销),无论其大小如何。

# Same approach using a dictionary
x = ["O", "L", "M", "S", "N", "J", "P", "T", "I", "R", "H", "G"]
y = ["S", "N", "H", "P", "T", "I", "O", "R", "L", "M", "G", "J"]

d = {}
for i,char in enumerate(y):
  d[char] = i

for i,char in enumerate(x):
  print(f"x[{i}] == y[{d[char]}]")

PS你的问题看起来像一个家庭作业问题。请阅读这封关于使用 Stack Overflow 解决家庭作业问题的公开信。


推荐阅读