python - 为什么这两个代码的运行时间不同?
问题描述
我正在解决 leetcode 上的一个问题,我注意到两个几乎相似的代码的不同运行时,这两个代码之间的唯一区别是在其中一个代码中我创建了 res 数组作为解决方案类实例变量,而在其他代码中 res 数组是临时的。以下是差异,几乎慢了 1.6 倍
我试了多次,但时差仍然存在?有人可以帮我知道原因吗?
代码1:
class Solution(object):
def __init__(self):
self.res = []
def dfs(self,node,i,j,board,path):
if not node:
return
if node.isComplete:
self.res.append(path)
#since we have already added this word we remove it from our trie.
node.isComplete = False
if i<0 or j<0 or i>=len(board) or j>=len(board[0]):
return
tmp = board[i][j]
nextNode = node.children.get(tmp)
board[i][j]='#'
self.dfs(nextNode,i+1,j,board,path+tmp)
self.dfs(nextNode,i-1,j,board,path+tmp)
self.dfs(nextNode,i,j+1,board,path+tmp)
self.dfs(nextNode,i,j-1,board,path+tmp)
board[i][j]=tmp
def findWords(self, board, words):
trie = Trie()
for w in words:
trie.insert(w)
root = trie.root
for i in xrange(len(board)):
for j in xrange(len(board[0])):
self.dfs(root,i,j,board,"")
return self.res
"""
:type board: List[List[str]]
:type words: List[str]
:rtype: List[str]
"""
代码2:
class Solution(object):
def findWords(self, board, words):
res = []
trie = Trie()
node = trie.root
for w in words:
trie.insert(w)
for i in xrange(len(board)):
for j in xrange(len(board[0])):
self.dfs(board, node, i, j, "", res)
return res
def dfs(self, board, node, i, j, path, res):
if node.isWord:
res.append(path)
node.isWord = False
if i < 0 or i >= len(board) or j < 0 or j >= len(board[0]):
return
tmp = board[i][j]
node = node.children.get(tmp)
if not node:
return
board[i][j] = "#"
self.dfs(board, node, i+1, j, path+tmp, res)
self.dfs(board, node, i-1, j, path+tmp, res)
self.dfs(board, node, i, j-1, path+tmp, res)
self.dfs(board, node, i, j+1, path+tmp, res)
board[i][j] = tmp
解决方案
推荐阅读
- asp.net-core - dotnet 命令在 centos 服务器上不起作用,已安装运行时
- unit-testing - 如何在单元测试中安全返回哈希令牌或敏感数据
- python - 为什么 FileNotFoundError 在 python 文件中不起作用
- api - 当我使用 api 将文档 url 发送到 Telegram bot 时出现 400 错误
- python - Django 多对多字段 add() 得到了一个意外的关键字参数“id”
- heroku - Heroku 上的 Python Telegram 机器人无法访问 Google 电子表格
- c++ - Detecting Quotes in a String C++
- javascript - Vuetify Chip breaks in Production
- python - 使用 Python 对图像进行 Web 抓取
- python - Get List of latest stable files from FTP server