【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
相关推荐
evans在进步1 小时前
LeetCode 64:最小路径和——Java 原地动态规划详解
java·leetcode·动态规划
Tisfy1 小时前
LeetCode 1386.安排电影院座位:哈希表+位运算
算法·leetcode·散列表·题解·哈希表
Nil2082 小时前
leetcode 199二叉树的右视图
算法·leetcode·深度优先
土司大王6 小时前
LeetCode hot100——两两交换链表中的节点
算法·leetcode·职场和发展
zander2588 小时前
LeetCode 300. 最长递增子序列
算法·leetcode·深度优先
欧叶冲冲冲8 小时前
Python常见数据结构的CRUD(LeetCode高频版速查)
数据结构·python·leetcode
圣保罗的大教堂9 小时前
leetcode 3622. 判断整除性 简单
leetcode
Lyyaoo.10 小时前
【普通数组】【中等】除了自身以外数组的乘积
数据结构·算法·leetcode
圣保罗的大教堂11 小时前
leetcode 2996. 大于等于顺序前缀和的最小缺失整数 简单
leetcode
圣保罗的大教堂11 小时前
leetcode 3702. 按位异或非零的最长子序列 中等
leetcode