LeetCode-1. 两数之和

https://leetcode-cn.com/problems/two-sum/

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

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

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

 

 

题解1:(1)判断是否是存在一个值是target减去遍历list的元素item等于item

             (2)如果存在这样的值判断是否仍存在有除此之外的另外一个值,如果有则把结果添加到result中,否则继续遍历下一                 个item

 

#python

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        result = []
        new_list = list(nums)
        for i in range(len(nums)):
            tmp = target - nums[i]
            if tmp == target / 2:
                new_list.remove(tmp)
                if tmp in new_list:
                    result.append(i)
                    result.append(new_list.index(tmp) + 1)
                continue 
            if tmp in nums:
                result.append(i)
        return result

题解2:(1)字典存储item和index作为键和值,每次遍历list时判断字典中是否有temp = target - item,如果有则返回字典中temp对应的值和此时遍历list的item的下标值,否则我将把当前遍历的item对应的index加到我的字典里面

 

#python

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dict = {}
        for index,item in enumerate(nums) :
            temp = target - item
            if temp in dict :
                return [ dict[temp] , index]                
            else :
                dict[item] = index



        

        

 

 

你可能感兴趣的:(剑指offer刷题记录)