![](/img/trans.png)
[英]What is the time complexity of popping an element from a dict in Python?
[英]What is the time complexity of popping an element and appending the same element to a Python list?
所以我知道从数组中弹出一个元素是 O(n) 因为你必须将所有元素移一个。 但是,如果您弹出一个元素并将相同的元素附加到数组的后面,所有这些都在一行中。 这会是恒定的操作 O(1),因为您不必移动任何东西吗? 请在下面的评论中查看我的代码。
def moveZeroes(self, nums: List[int]) -> None:
index = 0
zeroes = nums.count(0)
counter = 0
while True:
if counter == zeroes:
break
if nums[index] == 0:
nums.append(nums.pop(index)) # THIS LINE RIGHT HERE
counter += 1
else:
index += 1
当您使用其索引弹出任何元素时,您最多会进行 len(array) 移位以将长度减少 1。
您可以在 O(1) 时间复杂度内将 append 一个元素放入一个数组中。
但是,当您调用nums.append(nums.pop(index))
时。 它将首先执行第 1 步,然后执行第 2 步。所以总的来说,您仍然执行 O(n) 操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.