Python程序:查找可以将列表分割成子列表的个数,以便最终对列表进行排序


假设我们有一个名为nums的数字列表。我们可以将列表划分为一些单独的子列表,然后对每个部分进行排序。我们必须找到我们可以划分的子列表的最大数量,以便nums作为一个整体在之后被排序。

因此,如果输入类似于nums = [4, 3, 2, 1, 7, 5],则输出将为2,因为我们可以对像[4, 3, 2, 1]和[7, 5]这样的子列表进行排序。

要解决此问题,我们将遵循以下步骤

  • count := 0
  • main_sum := 0, sorted_sum := 0
  • 对于nums中的每个元素x和nums排序后的形式中的每个元素y,执行以下操作
    • main_sum := main_sum + x
    • sorted_sum := sorted_sum + y
    • 如果main_sum与sorted_sum相同,则
      • count := count + 1
  • 返回count

让我们看看以下实现,以便更好地理解

示例

在线演示

class Solution:
   def solve(self, nums):
      count = 0
      main_sum = sorted_sum = 0

      for x, y in zip(nums, sorted(nums)):
         main_sum += x
         sorted_sum += y
         if main_sum == sorted_sum:
            count += 1

      return count

ob = Solution()
nums = [4, 3, 2, 1, 7, 5]
print(ob.solve(nums))

输入

[4, 3, 2, 1, 7, 5]

输出

2

更新于: 2020年11月26日

123 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.