1.Two Sum

题目:https://leetcode.com/problems/two-sum/

题目解析:给定一个数组和一个目标值,使得数组中的两个数相加等于目标值,输出两个数所在的索引位置。

解法1:暴力搜索

例如数组为[2, 7, 11, 15],目标值为9,我们知道2+7=9,所求的两个数的索引位置为[0, 1]

遍历两遍数组:

第0个数,分别加上第1、2、3个数,判断是否满足2+7=9

第1个数,分别加上第2、3个数,判断是否满足2+7=9

以此类推......

注意:判断到最后两个数相加即可

代码如下:

class Solution(object):
    def twoSum(self, nums, target):
        for i in range(len(nums) - 1):
            for j in range(i+1, len(nums)):
                if nums[i] + nums[j] == target:
                    return [i, j]

解法2:哈希搜索

利用Python中的字典实现

遍历一遍数组:

我们需要找到目标值减去数组当前值的那个差值是否在数组中,每找一次,如果没找到的话,就将它做为字典的key,存入字典中,并把索引值做为字典的value

代码如下:

class Solution:
    def twoSum(self, nums, target):
        temp = {}
        for index, value in enumerate(nums):
            diff = target - value
            if diff in temp:
                print(diff)
                print(temp[diff])
                return [temp[diff], index]
            temp[value] = index

 

你可能感兴趣的:(LeetCode)