python - 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 循环?
解决方案
当然,假设 i 的范围是 25,j 也是 25,那么我们正在运行解决方案 b 625 次。在解决方案 A 的情况下,nums[i]+nums[j] == target 有可能提前发生(在值 1-1 和 i/j 的 25-25 值的另一个极端之间)并且您退出该过程。
推荐阅读
- arrays - char* 的大小和 char[] 的大小之间的差异
- javascript - 在Android WebView中以编程方式选择文本后可以显示可拖动光标吗?
- azure - Azure 数据工厂 - 复制数据 - 映射 - 动态内容表达式
- java - 哪些非 ulimit 限制会导致 open 在 linux 上返回 EMFILE?
- unix - 在 csv 文件中启用 Oracle 表数据的快速导出
- python - 检测到辣椒的面部识别后如何修复它?
- javascript - 如何使用条件 CSS 更改此图的颜色?
- sql-server - 在 SQL 中查找行的最大值
- vue.js - 使用 adal-angular 包 adal.js 身份验证上下文获取 Microsoft Graph 令牌
- django - 在 django 中为特定用例使用 select_related?