LeetCode-0001

介绍给大家入门级别偏高,但是工作中常常忽略的Python算法 散列值或者哈希法


有这样一个需求,给定一组数据sums,要求从这组数据中拿到任意两个数,且这两个数的和等于给定的数target,最后返回这两个数的索引

示范:

# 示例:

# 给定 nums = [2, 7, 11, 15], target = 9

# 因为 nums[0] + nums[1] = 2 + 7 = 9

# 所以返回 [0, 1]


分析:

先思考一下我们该怎么来解这两个数,给定数据中显然只有 2 +7= target  ,所以最简单最容易想到的就是遍历数组sums,拿到两个数字


方法一:

两层循环遍历

  def solution(self, nums, target):

        for i in range(len(nums)):

            for j in range(i + 1, len(nums)):

                if nums[i] + nums[j] == target:

                    return [i, j]

        return []

print(solution(([2, 7, 11, 15], 9)))


方法二  哈希法

此法简单高效,时间和空间都降了下来,是编码过程中最佳使用方法


重点出来了




def solution2(self, nums, target):

        hashset = {}

        for i in range(len(nums)):

            if hashset.get(target - nums[i]) is != None:

                return [hashset.get(target - nums[i]), i]

            hashset[nums[i]] = i

print(solution2(([2, 7, 11, 15], 9)) )

你可能感兴趣的:(LeetCode-0001)