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]
输出
True
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP