238. 除自身以外数组的乘积
时间: 2023-09-20 11:12:27 浏览: 126
这个问题可以使用前缀积和后缀积的思想来解决,具体步骤如下:
1. 创建一个和输入数组等长的数组 res,初始化为 1。
2. 从左到右遍历输入数组,依次计算每个元素左边所有元素的乘积,并将结果存入 res 中。
3. 从右到左遍历输入数组,依次计算每个元素右边所有元素的乘积,并将结果乘以 res 中对应位置的值,最终得到每个元素除自身以外数组的乘积。
具体的代码实现如下(以 Python 为例):
```python
def product_except_self(nums):
n = len(nums)
res = [1] * n
left_product = 1
for i in range(n):
res[i] *= left_product
left_product *= nums[i]
right_product = 1
for i in range(n-1, -1, -1):
res[i] *= right_product
right_product *= nums[i]
return res
```
这个算法的时间复杂度为 O(n),空间复杂度也为 O(n)。
相关问题
输出20个整数,输出其中能被数组中其它元素整除的那些数组元素
好的,让我来帮您解决这个问题。
首先,我需要获得一个包含20个整数的数组。请问您可以提供这个数组吗?如果没有,我可以随机生成一个。
接下来,我会编写一个算法来筛选其中能被数组中其它元素整除的元素。
代码如下:
```python
import numpy as np
#定义一个求最大公因数函数
def get_gcd(a, b):
while b:
a, b = b, a % b
return a
#生成随机数组
arr = np.random.randint(1, 101, 20)
#循环遍历数组
for i in range(len(arr)):
#定义一个除了自己以外所有元素的累积乘积
others_product = 1
for j in range(len(arr)):
if j != i:
others_product *= arr[j]
#如果others_product能够整除arr[i],则输出arr[i]
if others_product % arr[i] == 0:
print(arr[i])
```
运行以上代码,输出的就是其中能被数组中其它元素整除的数组元素。
希望这个回答能够解决您的问题,如果有任何疑问,请随时问我。
阅读全文