在哈希表中出现基本错误
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)]
生成列表列表。如果你打印它,你会看到它有两个项目(两个列表(,所以像a[i]
> 1 这样的索引操作将不起作用。也许您想生成具有不同结构的列表?
[[0 for i in range(2)]
for j in range(n)]
或者您可以更改索引逻辑,例如has[1][abs(a[i])] = 1
.
通常,它有助于打印两者之间的变量的状态,以随时了解正在发生的事情。