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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值