【Golang】LeetCode 238. 除了自身以外数组的乘积

238. 除了自身以外数组的乘积

题目描述

思路

我们可以通过建立两个数组,以O(n)O(n)O(n)的时间复杂度来解决这个问题。

具体来说,题目中要求我们求出当前数组当中除了自身以外的乘积,我们可以建立两个数组lmulrmul,分别用于统计除了自身之外左侧数组的乘积与右侧数组的乘积(前缀积与后缀积)。

最后在统计答案时,将两部分乘积进行相乘,即可得到最终的结果。

Golang 题解

go 复制代码
func productExceptSelf(nums []int) []int {
    n := len(nums)
    lmul, rmul := make([]int, n), make([]int, n)

    lmul[0], rmul[n - 1] = 1, 1
    for i := 1; i < n; i ++ {
        lmul[i] = lmul[i - 1] * nums[i - 1]
    }
    for i := n - 2; i >= 0; i -- {
        rmul[i] = rmul[i + 1] * nums[i + 1]
    }

    ans := make([]int, n)
    for i := 0; i < n; i ++ {
        ans[i] = lmul[i] * rmul[i]
    }
    return ans
}

Python 题解

python 复制代码
class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        n = len(nums)
        lmul, rmul = [1] * n, [1] * n

        for i in range(1, n):
            lmul[i] = lmul[i - 1] * nums[i - 1]
        for i in range(n - 2, -1, -1):
            rmul[i] = rmul[i + 1] * nums[i + 1]
        
        ans = [1] * n
        for i in range(0, n):
            ans[i] = lmul[i] * rmul[i]
        return ans
相关推荐
_日拱一卒11 小时前
LeetCode:207课程表
java·数据结构·算法·leetcode·职场和发展
风筝在晴天搁浅14 小时前
美团 LeetCode 692.前K个高频单词
算法·leetcode·职场和发展
z2005093015 小时前
今日算法(回溯子集)(模版题)
数据结构·算法·leetcode
YL2004042616 小时前
071字符串解码
数据结构·leetcode
z2005093018 小时前
今日算法(回溯子集)
数据结构·算法·leetcode
Hesionberger18 小时前
巧用异或找出唯一数字(多解)
java·数据结构·python·算法·leetcode
菜菜的顾清寒19 小时前
力扣HOT100(47) 二叉树的层序遍历
算法·leetcode·深度优先
sheeta199820 小时前
LeetCode 每日一题笔记 日期:2026.05.31 题目:2126. 摧毁小行星
笔记·算法·leetcode
INGNIGHT20 小时前
984.不含 AAA 或 BBB 的字符串(贪心)
开发语言·算法·leetcode
人道领域20 小时前
【LeetCode刷题日记】538.把二叉搜索树转换为累加树
java·开发语言·后端·算法·leetcode