用 Python 编写程序返回给定列表右侧较小元素的数量

pythonserver side programmingprogramming更新于 2026/1/19 11:24:17

假设我们有一个名为 nums 的数字列表,我们将创建一个新列表,其中新列表中的每个元素都是原始输入列表中该元素右侧较小元素的数量。

因此,如果输入为 nums = [4, 5, 9, 7, 2],则输出将为 [1, 1, 2, 1, 0],因为 4 右侧有 1 个较小的元素,5 右侧有 1 个较小的元素,9 右侧有 2 个较小的元素,7 右侧有 1 个较小的元素,2 右侧没有较小的元素。

为了解决这个问题,我们将遵循以下步骤 −

  • res := a new list, inc := a new列表

  • 当 nums 不为空时,执行

    • num := 从 nums 中删除最后一个元素

    • 在 res 末尾插入最左边的索引以将 num 插入 inc

    • 在 inc 中插入 num 后的排序列表

  • 返回列表 res[从索引 0 到末尾]

让我们看看下面的实现以便更好地理解 −

示例

import bisect
class Solution:
   def solve(self, nums):
      res, inc = [], []
      while nums:
         num = nums.pop()
         res.append(bisect.bisect_left(inc, num))
         bisect.insort(inc, num)
      return res[::-1]
ob = Solution()
nums = [4, 5, 9, 7, 2]
print(ob.solve(nums))

输入

[4, 5, 9, 7, 2]

输出

[1, 1, 2, 1, 0]

相关文章


有用资源