LeetCode No.1

时隔两年的再次更新,为了面试准备的刷题

Posted by Tron on April 20, 2022

重新开始刷题的我

按照Hot 100,Top 面试,算法精选这三类,重新开始刷LeetCode题目并记录下来!以前没有记录下来的东西都不知道该怎么复习。

LeetCode No.1

Category Difficulty Likes Dislikes
algorithms Easy (52.42%) 14194 -

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

Solution

Solution 1

Idea:

取每个元素,找对应的差元素,有就输出位置,没有就把取出的元素放回末尾

class Solution:
    def twoSum(self, nums: list[int], target: int) -> list[int]:
        count = 0 # 第一个元素的位置
        for i in nums:
            if count > len(nums):
                break
            count += 1
            j = target - nums.pop(0)
            if j in nums:
                return [count-1, nums.index(j)+count]
            else:
                nums.append(i)

Submission:

Accepted

  • 57/57 cases passed (900 ms)
  • Your runtime beats 37.72 % of python3 submissions
  • Your memory usage beats 90.67 % of python3 submissions (15.4 MB)

Solution 2

Idea:

建立哈希表,加快寻数的速度,在Python3中字典是哈希表

class Solution:
    def twoSum(self, nums: list[int], target: int) -> list[int]:
        hashtable = dict()
        for index, value in enumerate(nums):
            if target - value in hashtable:
                return [hashtable[target-value], index]
            hashtable[value] = index # 键值反存
        return []

Submission:

Accepted

  • 57/57 cases passed (36 ms)
  • Your runtime beats 87.84 % of python3 submissions
  • Your memory usage beats 5.02 % of python3 submissions (16.9 MB)

推测这次耗费内存是建立了哈希表