首页 > 解决方案 > Twosum 问题:为什么代码 A 的运行速度比代码 B 快得多?

问题描述

我刚开始 leetcoding,所以我从一些简单的问题开始,当我发现 2 段我认为执行基本相同的过程的代码除了显示结果的方式外,但运行时却大不相同。

代码 A:

class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
    lst_len = len(nums)
    for i in range (0, lst_len-1):
        for j in range (i+1, lst_len):
            if nums[i]+nums[j] == target:
                return[i,j]

代码 B:

class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
    lst_len = len(nums)
    result_lst = [0,0]
    for i in range (0, lst_len-1):
        for j in range (i+1, lst_len):
            if nums[i]+nums[j] == target:
                result_lst[0] = i
                result_lst[1] = j
    return result_lst

是不是因为代码 A 可以在找到结果后立即完成执行,而代码 B 仍然必须经过两个 for 循环?

标签: python

解决方案


当然,假设 i 的范围是 25,j 也是 25,那么我们正在运行解决方案 b 625 次。在解决方案 A 的情况下,nums[i]+nums[j] == target 有可能提前发生(在值 1-1 和 i/j 的 25-25 值的另一个极端之间)并且您退出该过程。


推荐阅读