在Python中编写程序以查找可以分区的子列表数,使给定列表最终排序

在Python中编写程序以查找可以分区的子列表数,使给定列表最终排序

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

因此,如果输入为nums = [4,3,2,1,7,5],则输出将为2,因为我们可以将子列表排序为[4,3,2,1]和[7,5]

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

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

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

示例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程