You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python求数组两数最大乘积算法压力测试缺失部分如何补充?

问题解决说明

运行无反应的两个核心缺失

  • 缺失main函数调用逻辑:Python不会自动执行名为main的函数,需要在脚本末尾主动触发
  • 缺失testGenerator函数实现:当前该函数仅返回None,无法生成测试用例,后续逻辑根本无法执行

额外需要修复的代码bug

你的两个解法本身也存在逻辑漏洞,就算补全测试逻辑也会大概率报错:

  1. my_solution逻辑缺陷

判断第二大值时的numbers[i] != numbers[index_1]条件错误,若数组存在两个相同最大值(如[5,5]),会跳过正确的第二大值,返回错误结果
未考虑负数场景:两个负数的乘积可能远大于正数乘积,当前仅找最大两个正数的逻辑完全不适用

  1. naive_solution逻辑缺陷

初始max_product设为0,若数组全为负数,两数乘积为正数但小于0时,会错误返回0

补全后可运行的完整代码

import random

def my_solution(numbers):
    # 如果你仅需要测试非负整数场景,保留原逻辑只修改第二重循环的判断条件即可
    # 以下为兼容正负整数的通用解法
    if len(numbers) < 2:
        raise ValueError("数组长度至少为2")
    max1 = max2 = float('-inf')
    min1 = min2 = float('inf')
    for num in numbers:
        # 更新最大值序列
        if num > max1:
            max2 = max1
            max1 = num
        elif num > max2:
            max2 = num
        # 更新最小值序列
        if num < min1:
            min2 = min1
            min1 = num
        elif num < min2:
            min2 = num
    return max(max1 * max2, min1 * min2)

def naive_solution(numbers):
    if len(numbers) < 2:
        raise ValueError("数组长度至少为2")
    n = len(numbers)
    max_product = float('-inf') # 修复初始值错误
    for first in range(n):
        for second in range(first + 1, n):
            current_product = numbers[first] * numbers[second]
            if current_product > max_product:
                max_product = current_product
    return max_product

def testGenerator():
    # 生成长度2-100、数值范围-1000到1000的随机测试用例
    length = random.randint(2, 100)
    return [random.randint(-1000, 1000) for _ in range(length)]

def main():
    test_count = 1000
    for i in range(test_count):
        test_case = testGenerator()
        correct_answer = naive_solution(test_case)
        my_answer = my_solution(test_case)
        assert my_answer == correct_answer, f"测试失败用例:{test_case},预期结果{correct_answer},实际结果{my_answer}"
    print(f"共通过{test_count}条测试用例")

# 主动触发主逻辑
if __name__ == "__main__":
    main()

运行效果

补全后运行脚本,若所有测试用例通过,会输出共通过1000条测试用例,如果测试不通过会直接抛出断言错误,给出对应的失败用例信息。

内容的提问来源于stack exchange,提问作者Leoucl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:54:07