php实现构建排除当前元素的乘积数组方法

网络编程 2025-03-24 01:10www.168986.cn编程入门

构建排除当前元素的乘积数组——PHP实现方法

你是否想过创建一个数组,它的元素是由原数组的所有元素乘积组成,但排除掉当前位置的元素呢?这个问题对于PHP程序员来说是个有趣的小挑战。让我们深入解决这个问题,并提供相应的PHP代码实例。

给定一个数组 `$A`,其中包含元素 `A[0], A[1], ..., A[n-1]`。我们的任务是创建一个新的数组 `$B`,使得 `$B` 中的每个元素都是 `$A` 中除当前位置外的所有元素的乘积。这里的关键是不能使用除法操作。

我们可以使用以下PHP函数来实现这个功能:

```php

function multiply($numbers) {

$len = count($numbers);

$result = array(); // 存储结果的数组

$left = array(); // 存储左侧乘积的数组

$right = array(); // 存储右侧乘积的数组

// 初始化左侧乘积数组的第一个元素为1

$left[0] = 1;

// 计算左侧乘积数组的其他元素

for ($i = 1; $i < $len; $i++) {

$left[$i] = $left[$i - 1] $numbers[$i - 1]; // 不包含当前元素在内的左侧元素的乘积

}

// 初始化右侧乘积数组的最后一个元素为1

$right[$len - 1] = 1;

// 从后向前计算右侧乘积数组的其他元素(逆序)

for ($j = $len - 2; $j >= 0; $j--) {

$right[$j] = $right[$j + 1] $numbers[$j + 1]; // 不包含当前元素在内的右侧元素的乘积(逆序)

}

// 结合左右两侧乘积数组得到最终结果数组

for ($i = 0; $i < $len; $i++) {

$result[$i] = $left[$i] $right[$i]; // 当前位置的排除当前元素的乘积结果

}

return $result; // 返回结果数组

}

```

现在,假设我们有这样一个数组 `$A`:`array(1, 2, 3, 4)`。我们可以调用 `multiply($A)` 函数来获得结果数组 `$B`。这个函数首先计算左侧和右侧的乘积数组,然后将它们组合起来得到最终结果。最终得到的 `$B` 将是原数组中排除每个元素后的所有其他元素的乘积。这种方法避免了除法操作,且能够保持结果的准确性。

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by