首页 > 解决方案 > 是否根据相当于“交换”元素的计数直接替换数组中的元素?

问题描述

我有两个数字列表,例如

order = [0,-1,1]  array = [0,1,0,-1,0,1,1,-1]  

array将始终仅包含 的元素order。任务是对数组列表进行排序,使其按照 指定的顺序order,即对于上面的示例,输出应该是

output -> [0,0,0,-1,-1,1,1,1]

我认为很清楚问题是什么。

我解决上述问题的方法是按顺序创建每个元素的计数:

count = {-1:2,0:3,1:3}

array然后根据计数和给出的顺序简单地迭代并替换每个元素order

sorting_pointer = 0 
for ele in order: 
    while count[ele]: 
        array[sorting_pointer] = ele 
        sorting_pointer += 1
        duplicate_counter[ele] -= 1
        
return array

我的问题:对于最后一批代码,这是否等同于“交换”元素?从时间和空间复杂性 POV?

通过“交换”元素,我的意思是做类似的事情:

array[0],array[1] = array[2],array[4]

标签: pythonarrays

解决方案


推荐阅读