在哈希表中获取基本错误
n = int(input("Enter the length of the array "))
a = [0 for i in range(n)]
for i in range(0,n):
a[i] = int(input("Enter elements of array: "))
# maxi = max(a)
# print(maxi)
has = [[0 for i in range(n)]
for j in range(2)]
for i in range(0,n):
if(a[i]>=0):
has[a[i]][0] = 1
else:
has[abs(a[i])][1] = 1
search = int(input("Enter the element to be searched: "))
# if(search>0):
def search1(search):
if(search>0):
if(a[search][0] == 1):
print("Present")
else:
print("Absent")
else:
search = abs(search)
if(a[search][1] == 1):
print("Present")
else:
print("absent")
如果发生这种情况,谁能帮我吗?错误:列表索引超出范围
此代码首先从用户那里获取输入数组,然后根据正数或负数将数字存储在哈希表中。然后基于索引本身制定搜索算法,以给出O(1)的时间复杂度。但是在这两者之间,我得到列表索引超出范围错误。请帮助解决以下错误。
所以,您正在使用列表来模拟哈希,对吗?这是问题所在:表达式
[[0 for i in range(n)]
for j in range(2)]
生成列表列表。如果您进行打印,您会看到它有两个项目(两个列表),因此i [1]之类的a[i]
这样的索引操作将不起作用。也许您想生成具有不同结构的列表?
[[0 for i in range(2)]
for j in range(n)]
它有助于打印变量之间的状态以通知正在发生的事情。