- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
del my_list[:]的大O是什么?这个命令删除列表中的所有元素。我的理解是它将是 O(n)。 n 是列表的长度。
因此这段代码的大 O 应该是 bigO(n^2),对吗?
请注意,这不是为了学校,而是为了我在面试练习时的理解。
from copy import deepcopy
class Solution:
# @param A : list of integers
# @return an integer
def removeDuplicates(self, A):
copy_array = deepcopy(A)
del A[:]
for j in copy_array:
if j in A:
pass
else:
A.append(j)
return len(A)
最佳答案
del
在这里不影响 big-O,循环是 n
和 A 测试中的 j 是
n
,所以嵌套循环是O(n**2)
; del
是 O(n)
,但它不是循环的一部分,并且由于它是低阶工作,因此被忽略。
旁注:
O(n)
的解决方案是使用 collections.OrderedDict
去重,保留顺序,使方法的主体只是:
A[:] = collections.OrderedDict.fromkeys(A)
return len(A)
关于Python - del my_list [ :]? 的大 O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44148504/
这个问题已经有答案了: Python List Slicing with None as argument (5 个回答) 已关闭 7 年前。 我今天正在编写一个函数来执行此操作: def foo(n
我已经用 Python 创建了一个列表 >>> my_list = [1, 2, 3, 4] 现在如果我想删除列表,我想使用 del 运算符,比如 >>> del my_list 这很好用并且可能是使
在编写一些 Python 代码时,我偶然发现了一些令我惊讶的事情。我正在考虑两种复制列表的方法,然后向副本中添加一个元素: # I thought this would be clean-lookin
del my_list[:]的大O是什么?这个命令删除列表中的所有元素。我的理解是它将是 O(n)。 n 是列表的长度。 因此这段代码的大 O 应该是 bigO(n^2),对吗? 请注意,这不是为了学
我无法弄清楚为什么这段代码不起作用 >>> my_list = [1,2,3,4,5] >>> my_set = {*my_list} File "", line 1 my_set =
我不小心发生了这种奇怪的行为: >>> a = [] >>> a[:] = ['potato', a] >>> print a ['potato', [...]] >>> print list(a)
我对在很多地方看到的以下代码感到困惑: cdef list my_list 我很困惑,因为 list 不是 C 数据类型,而是 Python 数据类型。为什么人们会使用 cdef 而不是 def 呢?
我正在使用 Django 1.10.2。 在 View 中,下面返回[] print(request.POST.getlist('collected_already', None))
我正在使用 Django 1.10.2。 在 View 中,下面返回[] print(request.POST.getlist('collected_already', None))
考虑以下代码片段 --> li = [3,1,2,3] print([x+99 if li.index(x)!=li.index(max(li)) else x-(99*(len(li)-1)) fo
我想将 N 个字符串连接到新字符串。每一项一行: my_list=['one', 'two', 'three'] lines='\n'.join(my_list) 不幸的是,我需要在 lines 中的
我想通过 psyopg2 执行这个 sql: select indexname from pg_indexes where (tablename, indexname) in ( ('ta
在对 Python 2.7 中的代码进行一些优化时,我偶然发现了以下现象: >>> from timeit import timeit >>> def fill_by_appending(): ...
my_list = range(1,11) print my_list[10:0:-1] 这段代码打印出 [10, 9, 8, 7, 6, 5, 4, 3, 2],这是没有意义的。为什么要这样做? 最
我是一名优秀的程序员,十分优秀!