在Python中生成由另一个数组的子数组串联而成的数组的程序

在Python中生成由另一个数组的子数组串联而成的数组的程序

假设我们有一个名为groups的2D数组和另一个名为nums的数组。我们必须检查是否可以从数组nums中选择n个不相交的子数组,使得第i个子数组等于groups[i](从0开始计数),如果i> 0,则第(i-1)个子数组将在nums中出现在第i个子数组之前。

因此,如果输入为groups = [[2,-2,-2],[4,-3,0]] nums = [1,-1,0,2,-2,-2,4,-3,0],则输出将为true,因为数组group [0]从索引3到5出现在nums中,而group [1]从索引6到8出现在nums中。

要解决这个问题,我们将按照以下步骤进行 –

  • i:= 0

  • 对于groups中的每个grp,执行以下操作

    • 对于范围从i到nums大小-1的j,请执行以下操作
      • 如果nums [从索引j到j + grp大小的子数组]与grp相同,则

      • i:= j + grp大小

      • 退出循环

      • 否则,

      • 返回False

  • 返回True

示例

让我们查看以下实现,以更好地理解 –

def solve(groups, nums):
   i = 0
   for grp in groups:
      for j in range(i, len(nums)):
         if nums[j:j+len(grp)] == grp:
            i = j + len(grp)
            break
      else:
         return False
   return True

groups = [[2,-2,-2],[4,-3,0]]
nums = [1,-1,0,2,-2,-2,4,-3,0]
print(solve(groups, nums))

输入

[[2,-2,-2],[4,-3,0]],[1,-1,0,2,-2,-2,4,-3,0] 

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程