LeetCode:除了自身以外数组的乘积

java 复制代码
class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] answer = new int[n];
        answer[0] = 1;

        //计算左侧乘积
        for(int i = 1; i < n; i ++){
            answer[i] = answer[i - 1] * nums[i - 1];
        }
        //计算右侧乘积
        int rightProduct = 1;
        for(int i = n-1; i >= 0; i--){
            answer[i] *= rightProduct;
            rightProduct *= nums[i];
        }
        return answer;
    }
}

题目要求空间复杂度为O(1),同时说明输出数组不视为额外空间,所以可以抓住这个点使用输出数组进行计算。

同时在看到**"除自己之外"** 和**"两头夹击"**这种字眼的题目的时候可以考虑使用前缀数组和后缀数组,形成肌肉记忆。

相关推荐
IronMurphy1 天前
【算法四十三】279. 完全平方数
算法
墨染天姬1 天前
【AI】Hermes的GEPA算法
人工智能·算法
papership1 天前
【入门级-数据结构-3、特殊树:完全二叉树的数组表示法】
数据结构·算法·链表
smj2302_796826521 天前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode
山甫aa1 天前
差分数组 ----- 从零开始的数据结构
数据结构
早日退休!!!1 天前
《数据结构选型指南》笔记
数据结构·数据库·oracle
Beginner x_u1 天前
链表专题:JS 实现原理与高频算法题总结
javascript·算法·链表
丑八怪大丑1 天前
Java数据结构与集合源码
数据结构
_深海凉_1 天前
LeetCode热题100-寻找两个正序数组的中位数
算法·leetcode·职场和发展
踩坑记录1 天前
leetcode hot100 寻找两个正序数组的中位数 hard 二分查找 双指针
leetcode