找到最小长度未排序子数组,进行排序,使整个数组在Python中排序

假设我们有一个给定的大小为n的未排序数组A [0..n-1],我们必须找到最小长度的子数组A [s..e],以便通过对该子数组进行排序,可以对整个数组进行排序。因此,如果数组类似于[2,6,4,8,10,9,15],则输出将为5。子数组将为[6,4,8,10,9]。

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

  • res:=将数字排序为数组

  • 回答:= 0

  • 将r设置为链接列表

  • 对于范围从0到res长度的i

    • 如果nums [i]与res [i]不同,则将i插入r

  • 如果r的长度为0,则返回0,如果r的长度为1,则返回1

  • 返回r的最后一个元素– r + 1的第一个元素

例 

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

class Solution(object):
   def findUnsortedSubarray(self, nums):
      res = sorted(nums)
      ans = 0
      r = []
      for i in range(len(res)):
         if nums[i] != res[i]:
            r.append(i)
      if not len(r):
         return 0
      if len(r) == 1:
         return 1
      return r[-1]-r[0]+1
ob1 = Solution()print(ob1.findUnsortedSubarray([2,6,4,8,10,9,15]))

输入值

[2,6,4,8,10,9,15]

输出结果

5
猜你喜欢