面试题答案
一键面试nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for sublist in nested_list:
i = 0
while i < len(sublist):
if sublist[i] % 2 == 0:
sublist.pop(i)
else:
i += 1
print(nested_list)
选择该删除策略的原因
- 遍历方式:使用嵌套循环来遍历嵌套列表。外层循环遍历每个子列表,内层循环遍历子列表中的每个元素。选择
while
循环是因为在删除元素时,列表的长度会发生变化,while
循环能更好地适应这种动态变化,避免因索引问题导致错误。 - 使用的方法:使用
pop
方法删除元素,直接在原列表上进行修改,操作简单直接。
时间复杂度
- 假设嵌套列表中总共有
N
个元素,最外层循环遍历子列表,每次内层循环遍历子列表中的元素。在最坏情况下,每次删除元素后,后续元素都需要向前移动,所以时间复杂度为$O(N^2)$。
空间复杂度
- 由于是在原列表上进行操作,没有使用额外的与输入规模相关的空间,所以空间复杂度为$O(1)$。