当前位置: 面试刷题>> 第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代码示例

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代码示例

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代码示例

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的情况。此外,对于整数溢出问题,虽然题目已说明不考虑,但在实际应用中需要特别注意处理大数乘积的情况。码小课网站中有更多关于算法和数据结构的内容分享,欢迎大家学习交流。

推荐面试题