Leetcode 238.除了自身以外数组的乘积 JavaScript (Day 7)

js一刷

javascript 复制代码
var productExceptSelf = function(nums) {
    let answer=[];
    let prev=[];
    let after=[];
    prev[0]=1,after[nums.length-1]=1;
    for(let i=1;i<nums.length;i++){
        prev[i]=prev[i-1]*nums[i-1];
    }
    for(let i=nums.length-2;i>=0;i--){
        after[i]=after[i+1]*nums[i+1];
    }
    for(let i=0;i<nums.length;i++){
        answer[i]=prev[i]*after[i];
    }
    return answer;    
};

js一刷 优化

javascript 复制代码
var productExceptSelf = function(nums) {
    let answer=[];
    answer[0]=1;
    for(let i=1;i<nums.length;i++){
        answer[i]=answer[i-1]*nums[i-1];
    }
    let after=1;
    for(let i=nums.length-1;i>=0;i--){
        answer[i]*=after;
        after*=nums[i];
    }
    
    return answer;    
};

算法核心:由于不能用除法,采用前缀积乘以后缀积的方式
一个数的 前缀积=前一个数的前缀积 × 前一个数的值
后缀同理
分别用两个数组存储每一个位置的前缀积和后缀积

空间优化:只用一个数组,先用这个数组记录每个位置的前缀积,然后一边计算后缀积,一边把前缀积与后缀积相乘,乘完后更新后缀积

相关推荐
雨季mo浅忆4 小时前
首个Vue3项目边写边学边记
前端·vue3
IT_陈寒5 小时前
React中useEffect依赖项这个坑我居然踩了三天
前端·人工智能·后端
qq4356947015 小时前
Vue04
前端·vue.js
一只齐刘海的猫6 小时前
【Leetcode】找到字符串中所有字母异位词
算法·leetcode·职场和发展
Yeats_Liao6 小时前
Feed流系统设计(三):数据模型与存储设计,从表结构到Redis收件箱
java·javascript·redis
我是真菜6 小时前
彻底理解js中的深浅拷贝
前端·javascript
江畔柳前堤7 小时前
github实战指南07-CLI 与高级技巧
前端·人工智能·chrome·深度学习·github·caffe·issue
kisdiem7 小时前
ReAct:让大模型一边推理,一边行动
前端·react.js·前端框架
西部荒野子7 小时前
JS 如何跑进两个原生世界
前端
RANxy7 小时前
AntV 入门系列第一篇:从零开始的数据可视化之旅
前端