Python中最短的未排序连续子数组

假设我们有一个整数数组,我们需要找到一个连续的子数组,这样,如果我们仅按升序对子数组进行排序,那么整个数组也将被排序。我们需要找到最短的此类子数组并输出其长度。因此,如果数组为[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的第一个元素

范例(Python)

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

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

以上是 Python中最短的未排序连续子数组 的全部内容, 来源链接: utcz.com/z/321812.html

回到顶部