python将索引升序_程序在Python中按升序删除元素后获取列表的索引

假设我们有一个不同值的列表,并且我们要以非降序删除每个数字。我们必须按删除顺序找到数字索引。

因此,如果输入类似于nums = [4、6、2、5、3、1],那么当我们删除1时,输出将为[5、2、3、0、1、0],因此数组为[ 4,6,2,5,3],然后删除2,数组是[4,6,5,3],然后删除3我们得到[4,6,5],然后删除4我们得到[6,5] ,删除5,[6],最后删除6。

范例(Python)

让我们看下面的实现以更好地理解-class Solution:

def solve(self, nums):

return solve(nums)

def solve(nums):

def my_sort(inds):

if len(inds) <= 1:

return inds

sorted_inds = []

mid = len(inds) // 2

left, right = my_sort(inds[:mid]), my_sort(inds[mid:])

i = j = 0

while i 

if nums[left[i]] 

sorted_inds.append(left[i])

i += 1

else:

sorted_inds.append(right[j])

larger[right[j]] += len(left) - i

j += 1

sorted_inds.extend(left[i:])

sorted_inds.extend(right[j:])

return sorted_inds

larger = [0] * len(nums)

my_sort(range(len(nums)))

num_larger_pairs = sorted(zip(nums, larger))

return [e[1] for e in num_larger_pairs]

ob = Solution()

nums = [4, 6, 2, 5, 3, 1]

print(ob.solve(nums))

输入值[4, 6, 2, 5, 3, 1]

输出结果[5, 2, 3, 0, 1, 0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值