当前位置: 面试刷题>> 第3章巩固200例 (经典算法题500道)
**题目描述补充**:
编写一个函数,该函数接受一个整数数组`nums`作为输入,并返回数组中所有元素的乘积(不考虑整数溢出问题)。
**要求**:
1. 不得使用任何内置函数直接计算数组乘积。
2. 如果数组为空,应返回1(因为空数组的乘积按数学定义是1)。
3. 如果数组中包含0,则乘积为0。
**示例1**:
输入: `[2, 3, 0, 4]`
输出: `0`
解释: 数组中有一个0,乘积为0。
**示例2**:
输入: `[2, 3, 4]`
输出: `24`
解释: 2 * 3 * 4 = 24。
**示例3**:
输入: `[]`
输出: `1`
解释: 空数组的乘积是1。
**PHP代码示例**:
```php
function arrayProduct($nums) {
$product = 1;
foreach ($nums as $num) {
if ($num == 0) {
return 0; // 如果遇到0,直接返回0
}
$product *= $num; // 否则,累乘
}
return $product;
}
// 测试示例
echo arrayProduct([2, 3, 0, 4]) . "\n"; // 输出: 0
echo arrayProduct([2, 3, 4]) . "\n"; // 输出: 24
echo arrayProduct([]) . "\n"; // 输出: 1
```
**Python代码示例**:
```python
def array_product(nums):
product = 1
for num in nums:
if num == 0:
return 0 # 如果遇到0,直接返回0
product *= num # 否则,累乘
return product
# 测试示例
print(array_product([2, 3, 0, 4])) # 输出: 0
print(array_product([2, 3, 4])) # 输出: 24
print(array_product([])) # 输出: 1
```
**JavaScript代码示例**:
```javascript
function arrayProduct(nums) {
let product = 1;
for (let num of nums) {
if (num === 0) {
return 0; // 如果遇到0,直接返回0
}
product *= num; // 否则,累乘
}
return product;
}
// 测试示例
console.log(arrayProduct([2, 3, 0, 4])); // 输出: 0
console.log(arrayProduct([2, 3, 4])); // 输出: 24
console.log(arrayProduct([])); // 输出: 1
```
**码小课提示**:
在解决此类问题时,重要的是要考虑到边界条件和特殊情况,如空数组和数组中包含0的情况。此外,对于整数溢出问题,虽然题目已说明不考虑,但在实际应用中需要特别注意处理大数乘积的情况。码小课网站中有更多关于算法和数据结构的内容分享,欢迎大家学习交流。