【发布时间】:2021-11-24 08:43:59
【问题描述】:
有 2 个长度为 N 和 M 的数组 A 和 B,您必须一次从 B 中删除 1 个元素,并检查 A 中是否存在 B 的排列
说明: 示例:
N = 5
A = [1,2,2,1,1]
M = 3
b = [1,2,1]
Output: [0,2,3]
当您从 B 中删除第一个元素时,它变为 [2,1] 您可以在数组 A 中看到从索引 0 开始的长度为 2 的子数组是 [1,2] 并且 [1,2] 是 [ 2,1] 你有一个对应于这个子数组的匹配项。同样,从索引 2 开始的子数组也是匹配的。所以你现在有 2 个匹配对应索引 0 和 2。现在数组 B 被恢复 B = [1,2,1]
现在,当您从 B 中删除第二个元素时,它变为 [1,1],您可以找到与从索引 3 开始的子数组对应的 1 个匹配项
删除第 3 个元素没有用,因为我们之前已经删除了 1 并检查了它
因此答案是 [0,2,3]
【问题讨论】:
标签: arrays algorithm data-structures permutation sub-array