我正在练习算法,我正在做一个问题,你给了一个数组,并且你想返回一个数组,该指数。所以[1,2,3,4]会返回[24,12,8,6]。我的方法是遍历数组,创建一个副本,并拼接出当前索引,然后将该副本推送到输出数组。有效的方法来压扁数组元素(而不是整个数组)javascript
function getAllProductsExceptAtIndex(arr) {
var productArr = [];
for (var i = 0; i < arr.length; i++) {
var copy = arr.slice();
copy.splice(i, 1);
productArr[i] = copy;
}
// return productArr;
for (var j = 0; j < productArr.length; j++) {
reduce(productArr[j]);
}
}
getAllProductsExceptAtIndex([1, 2, 3]); ---> productArr = [[2,3],[1,3],[1,2]]
现在,你必须在它的正确值的输出阵列,它只是需要被“降低”与乘法一个值。现在减少groovy和所有,但在这种情况下,我试图有效率(时间),所以循环通过一个数组和减少将O(n)平方,因为减少内部使用for循环。我想写一个帮手来减少,但如果你在循环中调用它,它仍然是o(n)方形?
什么是一种更有效的方法来乘以productArr的每个索引内的元素,然后变平?宁愿不在解决方案中使用分工。
在提供答案后,请不要改变您的问题。那是不好的行为。 – Amit
我不知道该如何回答,但我也提供了一个不分裂的解决方案。也许你可以编辑这个问题,以便你更喜欢*不使用除法(并将其标记为事后考虑) - 至少这不会使答案看起来不相关。 – Amit
当然,再次抱歉!将不会再发生 – devdropper87