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
示例
让我们看看以下实现以更好地理解:
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
广告