1、Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
num_index=[]
num_min=nums[0]
for i in range(len(nums)):
if nums[i] < num_min:
num_min=nums[i]
for i in range(len(nums)):
if nums[i]+num_min <= target:
num_index.append(i)
for i in range(len(num_index)):
for j in range(i+1,len(num_index)):
if nums[num_index[i]] + nums[num_index[j]] == target:
return [num_index[i],num_index[j]]
这道题主要在于判断大小,把不符合条件的数字踢出去,然后迭代计算就可以了
---------------------------------------------2016.9.2 分割线-----------------------------------------------------
对于代码做了一些改进,多加了一些判断,整体时间仍不理想
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
num_index = []
num_min = nums[0]
num_max = nums[0]
for i in range(len(nums)):
if nums[i] < num_min:
num_min = nums[i]
if nums[i] > num_max:
num_max = nums[i]
for i in range(len(nums)):
if nums[i] + num_min <= target and nums[i] + num_max >= target:
num_index.append(i)
for i in range(len(num_index)):
for j in range(i+1,len(num_index)):
if nums[num_index[i]] + nums[num_index[j]] == target:
return [num_index[i],num_index[j]]