[英]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.