我正在練習算法,我正在做一個問題,你給了一個數組,並且你想返回一個數組,該指數。所以[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