繁体   English   中英

Twosum 问题:为什么代码 A 的运行速度比代码 B 快得多?

[英]Twosum problem: Why does code A run so much faster than code 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 循环 go?

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

你是对的,在第一个代码中:

if nums[i]+nums[j] == target:
    return[i,j]

满足该条件后,立即返回答案并且不再进行任何工作,

但在第二个代码中,循环继续

您应该检查并确保两者都返回相同的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM