我们有n
子数组的订单选项数组。我们想知道是否可以获得订单履行数组,其中:
可视化问题的一些示例:
[
[3, 5],
[3, 5]
]
result: true
possible order_fulfillment = [3,5]
----------------------------------
[
[3, 5],
[3, 5],
[3, 5]
]
result: false
----------------------------------
[
[3, 5],
[3, 5],
[3, 5, 6]
]
result: true
possible order_fulfillment = [3,5,6]
我目前正在使用蛮力方法,检查所有可能的组合,直到找到完整的订单履行,此时我返回true,或直到我检查了所有可能的组合但没有成功然后返回false。
我很想知道是否存在更好的方法。 这将在浏览器中执行,因此是javascript标签。
答案 0 :(得分:1)
因此,只需迭代每个子数组,迭代子项,只添加唯一。
var OrderOptions = [[3,5],[3,5],[3,5,6]];
var PossibleFullFillment = {};
for( var a = 0; a < OrderOptions.length; a++ )
{
var OrderItems = OrderOptions[a];
for( var b = 0; b < OrderItems.length; b++ )
{
var current = "" + OrderItems[b].toString();
PossibleFullFillment[current] = current;
}
}
var FullFillment = [];
for( var possible in PossibleFullFillment )
{
FullFillment.push(parseInt(possible));
}
FullFillment.sort();
console.log(FullFillment);