更多精彩內容,請關注【力扣簡單題】。
題目
難度:★☆☆☆☆
類型:數(shù)組
給定一個整數(shù)數(shù)組 nums 和一個目標值 target,請你在該數(shù)組中找出和為目標值的那兩個整數(shù),并返回它們的數(shù)組下標。你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數(shù)組中同樣的元素作為加數(shù)。
示例
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解答
第一種方法:暴力求解
這是大多數(shù)同學都可以想到的方法,思路非常簡單,尋找所有可能的兩數(shù)組合,然后分別判斷能否使這兩個數(shù)的和為指定值target。時間復雜度為O(N^2)
class Solution(object):
def twoSum(self, nums, target):
:param nums: number array
:param target: target sum
:return: indexes of the two numbers
for i in range(len(nums)-1):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
return []
居然意外地通過了時間限制,不過有另一種方式:
class Solution(object):
def twoSum(self, nums, target):
for i in range(len(nums)):
temp = nums[:] # 取出當前的數(shù)字
temp[i] = '#' # 將當前數(shù)字的位置置#
dif = target - nums[i] # 計算差值
if dif in temp: # 查看差值是否在剩余數(shù)字中
return [i, temp.index(dif)]
return []
拓展
如果可以利用數(shù)組中的重復元素作為加數(shù)呢?
如果是尋找三個數(shù)呢?
如有疑問或建議,歡迎評論區(qū)留言~