程序查找可以划分的子列表的数量,以便最终在python中对给定列表进行排序

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

因此,如果输入像nums = [4,3,2,1,1,7,5],那么输出将是2,因为我们可以对[4,3,2,1]和[7, 5]

为了解决这个问题,我们将按照以下步骤操作:

  • 计数:= 0

  • main_sum:= 0,sorted_sum:= 0

  • 对于来自num的每个元素x和来自nums的排序形式的y,执行

    • 数:=数+ 1

    • main_sum:= main_sum + x

    • sorted_sum:= sorted_sum + y

    • 如果main_sum与sorted_sum相同,则

    • 返回计数

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

    示例

    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
    猜你喜欢