找到最小长度未排序子数组,进行排序,使整个数组在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