相关疑难解决方法(0)

O(n)复杂度算法,无需remove()方法即可从未排序列表中删除值实例

我有一个作业问题要编写一个函数,该函数是bagOfWords类的一部分,以从未排序的列表中删除值的实例。我们可以使用的列表操作不包括remove()。我们只需要O(n)复杂度,而朴素的算法就不能很好地执行。

我尝试过一种幼稚的算法。这太复杂了。它使用list.pop(index)本身具有O(n)复杂度,并且具有两个循环。由于不允许使用list.remove(),并且由于列表理解将具有相同的复杂性,但语法更加简洁,因此我试图找到一种更好的实现。

我认为解决方案可能是快速排序算法,因为如果我首先对列表进行排序,我可能可以做到O(n)复杂性。但是,如何在没有pop(index)复杂性的情况下删除该项目?现在我想知道通过KMP算法搜索模式是解决方案还是散列。

 def remove(self, item):
        """Remove all copies of item from the bag. 
        Do nothing if the item doesn't occur in the bag.
        """
        index = 0
        while index < len(self.items):
            if self.items[index] == item:
                self.items.pop(index)
            else:
                index += 1
Run Code Online (Sandbox Code Playgroud)

复杂度是二次的。但是,我想要的复杂度是O(n)

编辑:澄清一下,我们实际上仅限于修改现有列表。

python python-3.x

5
推荐指数
1
解决办法
166
查看次数

将列表中的所有其他元素相乘

我有一个列表,比如说:list = [6,2,6,2,6,2,6],并且我希望它创建一个新列表,其中每个其他元素乘以2,每个其他元素乘以1(保持不变)。结果应为:[12,2,12,2,12,2,12]

def multi():
    res = 0
    for i in lst[0::2]:
        return i * 2 

print(multi)
Run Code Online (Sandbox Code Playgroud)

也许像这样,但我不知道该如何发展。我的解决方案怎么了?

python list

0
推荐指数
1
解决办法
3584
查看次数

标签 统计

python ×2

list ×1

python-3.x ×1