算法刷题 1、第1题 两数之和

    技术2022-07-12  60

    方法1 两遍循环

    def twoSum(self, nums, target): n=len(nums) for i in range(n): for j in range(n): if nums[i]+nums[j]==target: return [i,j]

    时间:5896ms 空间:14.6MB

    方法2 把第二次循环变为判断target-nums[i]是否存在

    def twoSum(self, nums, target): n=len(nums) for i in range(n): j=target-nums[i] if j in nums: if (nums.index(j))!=i: return [i,nums.index(j)]

    时间:1104ms 空间:14.7MB

    方法3只比较i之前的数

    def twoSum(self, nums, target): n=len(nums) for i in range(n): temp=nums[:i] #只比较i之前的数 j=target-nums[i] if j in temp: return [temp.index(j),i]

    时间:448ms 空间:14.6MB

    方法4最快的一种方法是用哈希表,很多大神的思路是

    def twoSum(self, 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的情况

    时间:68ms 空间:15.2MB

    Processed: 0.009, SQL: 9