查找最大块以使数组在 Python 中排序的程序

假设我们有一个数组 nums,我们必须将数组拆分为一定数量的分区,并分别对每个分区进行排序。现在将它们连接起来后,我们将得到一个已排序的数组。我们必须找到我们可以创建的最大分区数?

所以,如果输入像 [3,2,4,5,5],那么输出将是 4,因为我们可以像 [3,2], [4], [5], [5] 这样的分区。

示例

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

def solve(nums):

   real=sorted(nums)

   p1,p2,c=0,1,0

   while True:

      flag=True

      tmp=sorted(nums[p1:p2])

      for j in range(len(tmp)):

         if tmp[j]!=real[p1+j]:

            flag=False

            p2+=1

            break

      if flag:

         p1,p2=p2,p2+1

         c+=1

      if p1==len(nums) or p2>len(nums):

         return c

nums = [3,2,4,5,5]

print(solve(nums))

输入

{3,2,4,5,5}
输出结果
4

以上是 查找最大块以使数组在 Python 中排序的程序 的全部内容, 来源链接: utcz.com/z/357022.html

回到顶部