`
standalone
  • 浏览: 616593 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

计算数组元素的乘积

阅读更多

Given an array a[i], your task is to generate an array b[i], b[i] is the product of the numbers in the array except the i th number.

 

My solution:

 

DP problem?

 

Define two functions:

f(i)=a[0]*a[1]*a[2]*...*a[i-1]

g(i)=a[i+1]*a[i+2]*...*a[n-1]

So b[i]=f(i)*g(i)

 

Then 

f(0)=1

f(1)=a[0]

f(i+1)=f(i)*a[i]

 

Following this rule we can calculate f[0], f[1],...f[n-1].

 

Similarly, 

g(n-1)=1

g(n-2)=a[n-1]

g(i-1)=g(i)*a[i];

 

Thus we get g[n-1], g[n-2]...g[0] in reverse sequence.

 

At last, we can calculate b[i]=f(i)*g(i).

分享到:
评论

相关推荐

    数组解决乘积超出数据范围

    每个数组元素代表大整数的一位或者几位数字,通过这种方式可以有效地避免数值溢出,并且能够处理任意大小的整数运算。 ### 三、关键步骤详解 #### 3.1 定义数组 首先定义两个一维数组:`a[0]` 和 `a[1]`。 - `a[0]...

    算法 子数组最大乘积

    **问题描述**:给定一个长度为`N`的整数数组`nums`,我们需要找到一个长度为`N-1`的子数组,其元素乘积最大。此问题的关键在于寻找一种高效的方法来计算所有可能的子数组乘积,并从中找出最大值。 **初步解决方案**...

    python入门-leetcode面试题解之第238题除自身以外数组的乘积.zip

    这个压缩包特别聚焦于第238题,该题目的目标是计算数组中每个元素除自身以外所有元素的乘积。 题目描述:给定一个整数数组`nums`,你需要找出数组中每个元素除自身以外的乘积。返回一个数组`output`,其中`output[i...

    php数组函数序列之array_sum() – 计算数组元素值之和

    - **`array_product()`**:计算数组中所有元素的乘积,类似于 `array_sum()` 但进行乘法运算。 - **`array_unique()`**:移除数组中的重复元素。 - **`array_filter()`**:根据提供的回调函数过滤数组中的元素。 - *...

    matlab开发-nprodmversion13

    在MATLAB编程环境中,"nprod"通常是指计算数组元素乘积的自定义函数。MATLAB的内置函数可能不直接支持处理特殊的数值,如0、无穷大(Inf)和负无穷大(-Inf)。在“matlab开发-nprodmversion13”这个项目中,开发者...

    乘积最大子数组(动态规划)1

    首先,我们要明确动态规划的基本思路:从数组的第一个元素开始,逐步计算每个子数组的最大乘积,并保持一个全局最优解。对于数组中的每个元素,我们需要考虑两种情况:当前元素乘以前一个子数组的最大乘积是否更大,...

    Matlab的函数及指令FunctionsandCommands.pdf

    - abs:计算数组元素的绝对值。 - acos:计算数组元素的反余弦值。 - acosh:计算数组元素的反双曲余弦值。 - angle:计算复数或复数数组的相位角。 - ans:Matlab中的一个特殊变量,用于存储上一次计算的结果。 - ...

    C#二维数组乘法算法

    整个程序完成后,用户可以通过控制台交互输入两个二维数组,程序会自动计算并输出它们的乘积。此算法适用于小规模矩阵,对于大规模矩阵,可以考虑使用更高效的算法,如Strassen分治算法或Coppersmith-Winograd算法。...

    构建乘积数组1

    接下来,从最后一个元素(下标为 n-1)向前遍历,利用一个变量 `accu` 来存储从当前元素到末尾的元素乘积。在每个步骤中,`accu` 乘以下一个元素的值,然后更新 B[i] 为 B[i] 与 `accu` 的乘积。这样,遍历结束后,...

    DP-LeetCode152. 乘积最大子数组(Python)

    对于每个新的元素`nums[i]`,我们计算与`dp[y][0]`和`dp[y][1]`的乘积,并取其中的最大值和最小值来更新`dp[x][0]`和`dp[x][1]`。最后,`res`变量记录了当前找到的最大乘积。 第二种方法虽然可读性好,但通用性较差...

    MATLAB 考试试题 1汇总.docx

    9. 最简单方法计算数组元素乘积之和: ```matlab a = [1 2 3 4 5]; b = sum(a .* circshift(a, -1)); % 使用circshift进行自卷积并求和 ``` 联立方程的解、绘制函数曲线、多项式零点寻找以及矩阵秩的计算等问题属于...

    腾讯2012年4月笔试题附加题

    ### 一、动态计算数组元素乘积 题目要求:给出一个整型数组`a[N]`,计算一个新的数组`b[N]`,使得`b[i] = a[0] * a[1] * ... * a[N-1] / a[i]`。 #### 解题思路: 1. **初始化**:首先需要初始化两个变量,分别...

    数组模拟整数相乘算法

    ` 其中 `type` 是数组元素的数据类型,`arrayName` 是数组名,`size` 是数组的大小。 接下来,我们来探讨如何实现数组模拟整数相乘。假设我们有两个整数数组 `arr1` 和 `arr2`,它们的长度相同,我们想要创建一个新...

    数组中两元素的最大乘积1

    题目 "数组中两元素的最大乘积1" 是一道典型的算法问题,属于计算机科学中的数组处理和最优化问题。这个问题在 LeetCode 上有相应的标签,意味着它可能是 LeetCode 的练习题目。给定一个整数数组 `nums`,目标是找到...

    2021-2022计算机二级等级考试试题及答案No.18868.docx

    `,计算数组元素乘积。 - **解答**:通过双重循环遍历数组,计算所有元素的乘积。最终结果为 `32`。 - **解释**:在这个例子中,数组 `b` 的每一行长度不一,但所有元素相乘的结果为 `32`。这是因为第一行只有一个...

    C++程序设计基础课后答案 第四章

    在第四个示例程序中,我们看到如何使用函数来计算数组元素的乘积。在这里,我们定义了一个函数f,它接收一个整数数组和一个整数size作为参数,并返回数组元素的乘积。这个示例程序展示了函数的基本概念和应用。 5. ...

    matlab中二数值数组及其运算.rar_matlab 数组_matlab二维数组_matlab数组

    还有其他函数,如`exp(a)`计算数组元素的指数,`sqrt(a)`计算元素的平方根,`sum(a)`计算数组元素的总和,以及`mean(a)`计算平均值等。 **数组运算和矩阵运算**是MATLAB的一大特点。数组运算允许在同一个操作中处理...

    java-leetcode面试题解双指针之第713题乘积小于k的子数组.zip

    子数组是由数组中连续元素组成的序列,而乘积则是子数组中所有元素的乘积。 双指针在这里的应用主要是为了减少遍历数组的复杂度。我们可以设定两个指针,一个指向数组的开始(称为左指针`left`),另一个初始化为左...

    MATLAB数组运算.ppt

    6. **prod**:计算数组元素的乘积。 7. **sort**:对数组进行排序,可以按升序或降序。 逻辑运算在MATLAB中也很常见,0被视为逻辑假,非0值被视为逻辑真。我们可以使用以下逻辑运算符: 1. **&**:逻辑与,只有当...

Global site tag (gtag.js) - Google Analytics