Python 程序:通过连接另一个数组的子数组生成数组


假设我们有一个名为 groups 的二维数组和另一个数组 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] 出现在 nums 的索引 3 到 5 处,而 group[1] 出现在 nums 的索引 6 到 8 处。

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

  • i := 0

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

    • 对于从 i 到 nums 大小 - 1 的范围内的每个 j,执行以下操作:

      • 如果 nums[从索引 j 到 j+ grp 大小] 的子数组与 grp 相同,则:

        • i := j + grp 大小

        • 退出循环

      • 否则:

        • 返回 False

  • 返回 True

示例

让我们看看以下实现以更好地理解:

Open Compiler
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]

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

True

更新于: 2021年10月6日

209 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告