349. Intersection of Two Arrays

xiaoxiao2021-02-28  72

https://leetcode.com/problems/intersection-of-two-arrays/#/description 先将两个list中的重复元素去掉,即使用set(list)去重,再转化为list即可,这时list中的元素都是没有重复的

class Solution(object): def intersection(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ l=[] nums1 = list(set(nums1)) nums2 = list(set(nums2)) for i in range(len(nums1)): if nums1[i] in nums2: l.append(nums1[i]) return l

直接使用set的&运算,得到相同的元素,然后转为list

class Solution(object): def intersection(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ nums1=set(nums1) nums2=set(nums2) return list(nums1&nums2)

一直在考虑设立flag标记已经要返回的元素,使得返回的元素中没有重复的,但是下面这种方法非常简单

class Solution(object): def intersection(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ res = [] for i in nums1: if i not in res and i in nums2: res.append(i) return res

这种使用map的方法开始的时候想了,但是没有想到的是一旦发现nums2中的元素在map中之后 ,直接将相应map[j]置为零这种处理重复的方法,还在想怎么-1

class Solution(object): def intersection(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ res = [] map = {} for i in nums1: map[i] = map[i]+1 if i in map else 1 for j in nums2: if j in map and map[j] > 0: res.append(j) map[j] = 0 return res

其中这句非常厉害好用~

for i in nums1: map[i] = map[i]+1 if i in map else 1
转载请注明原文地址: https://www.6miu.com/read-41696.html

最新回复(0)