Leetcode 1. Two SUM(两数之和)Python
本人比较菜看到的第一眼就只想到暴力求解,然后用了两重循环
就是通过循环遍历找到第一个数 然后在数组中遍历找到第二个数跟第一数之后为所要求的和
用到了函数enumerate():相比正常的for循环可以多返回一个元素的地址
代码如下:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
k=0
A=[]
for index1,i in enumerate(nums):
for index2,j in enumerate(nums):
if index1!=index2:
m=i+j
if m==target:
A.append(index1)
A.append(index2)
return A
时间复杂度应该是o(n**2)
然后看了一下大佬的操作:
def twoSum(self, nums: List[int], target: int) -> List[int]:
lens = len(nums)
for i in range(lens):
num1 = nums[i]
num2 = target - num1
if num2 in nums:
if num1 == num2 and not nums.count(num1) > 1:
continue
return [i, nums.index(num2, i+1)]
其中的index()函数可用于查找列表中对应函数的索引值并输出
复杂度为O(n),就是一重循环遍历,然后在循环中检索数组中是否有另一个加起来为想要的数字。
希望对你有帮助!!!!