242.有效的字母异位词
题目链接:242. 有效的字母异位词 - 力扣(LeetCode)
思路:这个题在python中有多种解法 这一种是最简单的 我们用collections中的counter函数 这个函数可以直接输出字符串中的字符的种类以及对应的数量 下面是代码
from collections import Counter
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
t_counter=Counter(t)
s_counter=Counter(s)
return t_counter==s_counter
349. 两个数组的交集 :
题目链接:349. 两个数组的交集
第一个思路:这里我们可以采用暴力法用两个for循环遍历 首先我们创造一个空列表a让nums1与nums2相等的元素添加到列表a里面 由于取的是交集 不能出现重复元素 所以我们用and nums1[i] not in a 来避免出现重复元素 下面是代码
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
a=[]
for i in range(len(nums1)):
for j in range(len(nums2)):
if nums1[i]==nums2[j] and nums1[i]not in a:
a.append(nums1[i])
return a
第二个思路:我们用哈希表与集合 创造一个hashmap={} 用for遍历nums1 用hashmap[i]=hashmap.get(i,0)+1 nums1里面的元素添加到hashmap里面作为value 并且每添加一次 次数+1 随后创造一个集合res=set() 因为集合里面不能出现重复的元素 所以我们将nums2与nums1里面都存在的元素直接加入到集合里面就可以 最后以列表的形式返回
下面是代码
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
hashmap={}
for i in nums1:
hashmap[i]=hashmap.get(i,0)+1
res=set()
for j in nums2:
if j in hashmap:
res.add(j)
return list(res)
1. 两数之和
题目链接:1. 两数之和
第一个思路:暴力法遍历 就不多写了 下面是代码
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
for j in range(len(nums)):
if nums[i]+nums[j]==target and i!=j:
return j,i
第二个思路:哈希表 我们创造一个hashmap={} 用for index,num in enumerate(nums) (这里enumerate函数的作用是让index与num一一对应 ,将其组合为一个索引序列,可以同时获得索引和值 但此时hashmap里面是空的) 我们假设a+b等于target 那么让a存在于nums里面 判断是否有a+b等于target 就可以用target-a 是否存在于nums里面 依靠这个思路 我们用 if target-num in hashmap 来判断是否存在这样一个b 如果存在就return [hashmap[target-num],index] 因为这里需要返回一个列表 而且列表里面是下标 但由于此时hashmap是空的 我们就在外面加上一个hashmap[nums[index]]=index (这个的作用是让hashmap中为nums[index] 值 对应上index的键 这样在enumerate这个函数中也可以生成索引序列 ) 最后在代码的尾部加上return[](这里是因为有存在nums里面无法找出可以和成target的值 于是返回一个空列表)
下面是代码
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap={}
for index,num in enumerate(nums):
if target-num in hashmap:
return [hashmap[target-num],index]
hashmap[nums[index]]=index
return[]