问题是返回数组中删除的重复数字。 link
这是解决方案。
dict1={}
arr=[]
for i in nums:
if i not in dict1:
dict1[i]=1
arr.append(i)
nums[:]=arr
return len(nums)
这是我的方法......为什么不起作用?
hash = {}
for num in nums:
if num in hash:
nums.remove(num)
hash[num] = num
return len(nums)
我一直在研究这个问题超过30分钟:(
答案 0 :(得分:3)
从算法的角度来看,第二个看起来并不好,因为remove
具有比散列插入和删除更高的时间复杂度。因此,删除时间超过O(1)
。第一个实现使用附加列表。此外,您还可以执行list (hash.keys ())
并返回它,而不是维护另一个数组。
对于平均和摊销的案例(检查https://wiki.python.org/moin/TimeComplexity?),Python列表删除O(n)
,但dict操作的平均情况为O(1)
,O(n)
摊销时间为set
。在这种情况下,我在dict中标记元素,然后返回键是一个更好的主意。
虽然,在这种情况下,我认为使用一组WebElement email= driver.findElement(By.name("Email"));
email.clear();
email.sendKeys("");
标记唯一的项目可能是一个更好的主意,因为它不仅会更快,而且会更轻松。
从代码的角度来看,除非您使用索引访问和修改列表并自行处理列表修改和索引操作,否则不要修改您正在迭代的列表。