arrays - 为什么我的蛮力解决方案比优化的哈希表解决方案更快?
问题描述
这是我为Python3 中 leetcode 上的二和问题提交的两个解决方案:
蛮力:O(n^2)
运行时间:44 毫秒
内存使用:14.4 MB
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for indx1, val1 in enumerate(nums):
for indx2, val2 in enumerate(nums[indx1+1:]):
if val1 + val2 == target:
return [indx1, indx2+indx1+1]
return []
哈希表(dict)解决方案:O(n)
运行时间:52 毫秒
内存使用:14.3 MB
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
h = {}
for i, num in enumerate(nums):
n = target - num
if n not in h:
h[num] = i
else:
return [h[n], i]
我真的不明白为什么蛮力 O(n^2) 比优化的 O(n) 解决方案更快??!
非常感谢你。
解决方案
推荐阅读
- c# - 如何区分相同的方法调用
- c# - 通过 WebBrowser 控件获取 POST 请求的结果
- sql - Teradata - 仅插入新行
- javascript - 我可以/如何通过 URL 参数在 iframe 中调用 Javascript
- jquery - SVG 动画因多个元素而冻结
- twitter-bootstrap - 卡片不透明度设置应用于卡片主体中的图像
- c# - 如何使用 C# 中的共享点 API 在共享点中搜索文档
- javascript - 将ajax调用中返回的数据与JS函数中的数组值相等
- node.js - 使用节点在 docker 容器中执行 shell 脚本
- java - 在 Eclipse IDE 中添加 throws 声明的快捷方式