Python中实现删除元素的升序列表的索引程序
假设我们有一个由不同值组成的列表,并且我们想以非递减的顺序删除每个数字。我们必须按它们删除的顺序找到数字的索引。
因此,如果输入是nums = [4, 6, 2, 5, 3, 1],则输出将是[5, 2, 3, 0, 1, 0],因为我们首先删除1,所以数组变成[4, 6, 2, 5, 3],然后删除2,数组变成[4, 6, 5, 3],然后删除3我们得到[4, 6, 5],然后删除4我们得到[6, 5],删除5,[6],最后删除6。
解决此问题,我们将遵循以下步骤−
- 定义一个my_sort()函数。这将采取inds
- 如果inds的大小<=$1,则
- 返回inds
- sorted_inds:=一个新的列表
- 中间:= inds的大小/2
- 左:= my_sort(inds[从索引0到中间]),右:= my_sort(inds[从索引中间到最后])
- I :=0, j :=0
- 当i
- 如果nums[left[i]]
- 将left[i]插入sorted_inds的末尾
- i:= i+1
- 否则,
- 将right[j]插入sorted_inds的末尾
- larger[right[j]]:=larger[right[j]]+left的大小-i
-
j := j + 1
- 将left[从索引i到结尾]插入sorted_inds
- 将right[从索引j到结尾]插入sorted_inds
- 返回sorted_inds
- 从主方法中执行以下操作−
- larger:=大小为nums的新列表,并用0填充
- my_sort(num_range 0 to size of nums)
- num_larger_pairs:为每个(nums,larger)创建一对并对它们进行排序
- 返回包含num_larger_pairs中的所有e[1]的列表
示例(Python)
让我们看以下实现以获得更好的理解 −