function productExceptSelf(input){ if(input.lenght==0){ return [] } let mul=input.reduce((total,n) =>{ return total*n },1) return input.map(n => {return mul/n}) }
function productExceptSelf(nums){ var allRes = 1; //获得所有元素的乘积 nums.forEach(element => { allRes *= element; }); //除以自身 var numsRes = nums.map(element =>{ return allRes/element; }); return numsRes; } // var input = [1,2,3,4]; // productExceptSelf(input); // var input2 = [2,3,4,5]; // productExceptSelf(input2);
const productExceptSelf = (numbers) => {
let newNumbers = [];
if(Array.isArray(numbers)) {
let themultiResult = numbers.reduce((a, b) => a * b);
for(let i = 0; i < numbers.length; i++) {
newNumbers[i] = themultiResult / numbers[i]
}
} else {
console.error('please intpu correct data type')
}
return newNumbers;
}
function productExceptSelf(input) { let output = [];//定义输出数组 for (let i = 0; i < input.length; i++) { //以input[i]为界限,将输入截取为左侧和右侧两数组 let left = input.slice(0, i); let right = input.slice(i + 1, input.length); var sum1 = 1, sum2 = 1, sum = 1;//sum需定义在循环里,避免后续sum成绩叠加 //左侧数组乘积和 for (let value of left) { sum1 *= value; } //右侧侧数组乘积和 for (let zhi of right) { sum2 *= zhi; } //取左右两数组乘积 if (left.length == 0) { sum = sum2; } else if (right.length == 0) { sum = sum1; } else { sum = sum1 * sum2; } //output[i]对应input[i]处所求得的sum值 output[i] = sum; } //返回数组 return output; } //可自行验证 console.log(productExceptSelf([2, 0, 9, 5]));
function productExceptSelf(input) { if (!input || !input.length) return 0; let result = 1; // 计算总和 input.forEach(item => { result *= item; }); // 两个0,结果就是0; 一个零,返回除0以外的数字累乘 function getResult() { let flag = 0; return input.reduce((pre, cur, index, arr) => { if (cur === 0) flag++; if (flag === 2) return 0; // 第二次碰到0,累乘0 return cur === 0 ? pre : pre * cur;//如果第一次碰到0,就跳过 }, 1) } // 处理每一项数据 return input.map((item, index, arr) => { return item === 0 ? getResult() : result / item; }); } console.log(productExceptSelf([1, 2, 3, 4, 0]));// [0,0,0,0,24] console.log(productExceptSelf([0, 2, 3, 4, 0])); //[0, 0, 0, 0, 0]
function productExceptSelf(value) { let list = JSON.parse(JSON.stringify(value)) let res = [] value.forEach((item,index) => { let all = 1 let list = JSON.parse(JSON.stringify(value)) list.splice(index,1) list.forEach(item => all *= item) res.push(all) }) return res }各位大佬的方法,可能不适合数组中含有0的情况,那样会出现/0 结果也会不对
function productExceptSelf(input){ let mul = input.reduce((total,n) => total *n ); return input.map(n => mul/n); }
function productExceptSelf(nums) { var flag = nums.indexOf(0); if (flag != -1) { var arr = Array.from({ length: nums.length }, () => 0); var sum=1; nums.forEach(function(value,key) { if (key!=flag) { sum *= value; } }); arr[flag] = sum; return arr; } else { let mul = nums.reduce((total, n) => { return total * n }, 1) return nums.map(n => { return mul / n }) } }
var productExceptSelf = function(nums) { let answers = new Array(nums.length) answers[0] = 1 for(let i = 1; i < answers.length; i++) { answers[i] = answers[i - 1] * nums[i - 1] } let R = 1 for(let i = answers.length - 1; i >= 0; i--) { answers[i] = answers[i] * R R = R * nums[i] } return answers };https://leetcode-cn.com/problems/product-of-array-except-self/