gpt4 book ai didi

python - 为什么我的 python 代码这么慢(leetcode)?

转载 作者:太空狗 更新时间:2023-10-30 01:54:09 24 4
gpt4 key购买 nike

<分区>

Given an array of integers, every element appears twice except for one. Find that single one.

Note: Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
prev = []
for i,j in enumerate(nums):
if j in prev:
nums[i] = -j
else:
prev.append(j)
return sum(nums)

这是leetcode的一道题,也是AC率最高的一道题。但是,随着我的代码的进行,它告诉我已超出时间限制并且无法被接受。任何人都可以分析我的代码,包括复杂性吗?太感谢了。

更新:谢谢大家,我已经将“prev”从列表更改为集合,效果很好!

class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
prev = set([])
for i,j in enumerate(nums):
if j in prev:
nums[i] = -j
else:
prev.add(j)
return sum(nums)

但是,我仍在寻找不需要额外内存的解决方案,如问题所述。

更新:我使用另一种方法尝试解决问题,但再次收到超时。

class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
for i,j in enumerate(nums):
if j in set(nums[:i+1]):
nums[i] = -j
return sum(nums)

实际上我有点困惑,像 nums[:i+1] 这样的切片会在每个循环中创建一个单独的列表吗?那么list的创建是不是这里最耗时呢?我使用集合而不是列表,这样可以降低搜索成本。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com