algorithm - 查找包含特定值的所有组合,其中所有值在数组中彼此相邻
问题描述
我有一个包含所有唯一值的可变长度数组,我需要找到索引彼此相邻并且始终包含指定值的所有值组合。每个结果组合中的值的顺序无关紧要(但是我在示例中将它们按顺序排列以更好地说明)。
例如: [5, 4, 2, 0, 1, 3]
如果选择的具体值是 0,我们最终会得到以下 12 种组合:
0
0, 1
2, 0
0, 1, 3
2, 0, 1
4, 2, 0
2, 0, 1, 3
4, 2 , 0, 1
5, 4, 2, 0
4, 2, 0, 1, 3
5, 4, 2, 0, 1
5, 4, 2, 0, 1, 3
如果选择的具体值是 3,我们最终会得到以下 6 种组合:
3
1, 3
0, 1, 3
2, 0, 1, 3
4, 2, 0, 1, 3
5, 4, 2, 0 , 1, 3
任何编程语言的答案都可以。
编辑:我相信这可以通过找到所有数字的所有组合然后缩小该列表以确保每个组合满足要求来强制执行......它并不理想但应该可以工作。
解决方案
可以使用以下算法在 O(n^3) 时间复杂度内解决此问题:
Step-1:找到目标元素的索引。
Step-2:遍历目标的索引到最右边的索引。让我们将此迭代器称为idx。
Step-3:然后从目标索引迭代到最左边的索引。让我们将此索引称为i。
第 4 步:打印索引idx和i之间的所有元素。
按照上述步骤将打印所有组合。
上述算法的代码是使用下面的python实现的。
def solution(array,target):
index = -1
for idx,element in enumerate(array):
if(element == target):
index = idx
n = len(array)
for idx in range(n-1,index-1,-1):
for i in range(index,-1,-1):
for j in range(i,idx+1):
print(array[j],end = ",")
print()
arr = [5, 4, 2, 0, 1, 3]
target = 0
solution(arr,target)
推荐阅读
- python - 如何将 pandas 数据框中的列值作为新的键值对添加到具有字典的另一列中?
- pandas - Pandas 函数为 DataFrame 中的所有列标题添加下划线
- python - 使用 Python 和 Pandas 按多个文件的标准计数
- xml - 通过 XSLT 将缺少元素值的 XML 转换为宽 CSV 格式
- node.js - sequelize 找不到 SQL Server 主机错误
- laravel - 检查 Eloquent 元素是否与另一个元素相关(使用 MorphToMany 关系)
- javascript - 当两个密码不匹配时,我的 JS 函数不打印任何内容
- c# - 在 SQL Server 中水平显示数据
- image - 需要帮助显示带有颤振/飞镖的图像
- python - 如何读取 Excel 文件,创建二维码?