题目:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
给出一个整形数组,返回数组中两个值的索引,这两个值相加等于一个特殊的target
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
方法1:直接嵌套两个for循环
缺点:时间复杂度较大,不符合要求
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
result = []
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if target == nums[i] + nums[j]:
result.append(i)
result.append(j)
return result
方法2:复制一个数组,将遍历过的值在两个数组中做处理
缺点:该方法达到了提交要求,但任然不是最优解
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
result = []
nums_copy = nums.copy() # 复制数组
i = 0
while len(nums) > 0:
pop = nums.pop(0) # 删除数组元素
j = nums_copy[i] # 遍历到的值临时赋值
nums_copy[i] = 'x' # 处理遍历到的值
if target - pop in nums_copy:
nub = nums_copy.index(target - pop) # 取索引
if i != nub:
result.append(i)
result.append(nub)
break
nums_copy[i] = j # 恢复处理值
i += 1
return result

本文探讨了在给定整数数组中寻找两个数,使它们的和等于特定目标值的算法。通过两种方法实现这一目标,包括直接使用嵌套循环和复制数组进行处理的方法。文章详细介绍了每种方法的实现过程及优缺点。
1725

被折叠的 条评论
为什么被折叠?



