leetcode-01

题目

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

题解

题解的思路是找到数的关系 nums[0]=target-nums[1] nums[0]在target中,返回ture

def twoSum (nums,target):
    lens = len(nums)
    j = -1 
    for i in range(lens):
        if (nums.count(target - nums[i]) == 1) & (target - nums[i] == nums[i]): 
            countinue
        else:
            j = nums.index(target - nums[i],i+1)
            break
    if j > 0:
        return [i,j]
    else:
        return []

def twoSum(nums, target):
    hashmap={}
    for i,num in enumerate(nums):
        if hashmap.get(target - num) is not None:
            return [i,hashmap.get(target - num)]
        hashmap[num] = i #这句不能放在if语句之前,解决list中有重复值或target-num=num的情况

  • index(x,x+1)是从num1后的序列后找num2
  • 耗时长1636s 耗时70s
  • 参考了大神们的解法,通过哈希来求解,这里通过字典来模拟哈希查询的过程。
  • 个人理解这种办法相较于方法一其实就是字典记录了 num1 和 num2 的值和位置,而省了再查找 num2 索引的步骤
def twoSum(nums, target):
    hashmap={}
    for ind,num in enumerate(nums):
        hashmap[num] = ind
    for i,num in enumerate(nums):
        j = hashmap.get(target - num)
        if j is not None and i!=j:
            return [i,j]

暂停刷题 研究算法 基本功不够

  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2020 iteod
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信