leetcode348&350之计算两个数组的交集
2021-04-02 13:25
阅读:450
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2]
示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9]
来源:leetcode
代码实现:
1 from collections import Counter 2 3 4 def instersection(nums1, nums2): 5 ‘‘‘ 6 计算两个数组的交集 7 :param nums1: 8 :param nums2: 9 :return: 10 ‘‘‘ 11 return list(set(nums1) & set(nums2)) 12 13 14 print("------测试intersection()--------") 15 nums1 = [4, 9, 5] 16 nums2 = [9, 4, 9, 8, 4] 17 res = instersection(nums1, nums2) 18 print(res) 19 20 21 def intersect(nums1, nums2): 22 res = [] 23 for i in nums1: 24 if i in nums2: 25 nums2.remove(i) 26 res.append(i) 27 return res 28 29 30 print("------测试intersect()-------") 31 nums1 = [4, 9, 5] 32 nums2 = [9, 4, 9, 8, 4] 33 res = intersect(nums1, nums2) 34 print("res=", res) 35 36 37 def intersect1(nums1, nums2): 38 res = {} 39 for num in nums1: 40 if res.get(num) == None: 41 res[num] = 1 42 else: 43 res[num] += 1 44 print(res) 45 46 result = [] 47 for num in nums2: 48 if num in res and res[num] != 0: 49 result.append(num) 50 res[num] -= 1 51 else: 52 continue 53 return result 54 55 56 print("------测试intersect1()-------") 57 nums1 = [4, 9, 5] 58 nums2 = [9, 4, 9, 8, 4] 59 result = intersect1(nums1, nums2) 60 print("result=", result)
输出:
------测试intersection()-------- [9, 4] ------测试intersect()------- res= [4, 9] ------测试intersect1()------- {4: 1, 9: 1, 5: 1} result= [9, 4]
总结:349考虑重复元素,当元素重复出现时,只输出一个就行了,借助set很容易实现。return list(set(nums1)&set(nums2))。set间的&表示两集和求交集
350当元素重复时,输出结果元素出现次数应与每个元素在两列表中出现的最低次数一致。代码中采用两种方法来实现
新的知识点:
collections.Counter统计迭代器中元素个数,可以将Counter转为dict,遍历dict和hash表空间复杂度为O(1),遍历列表空间复杂度为O(N)
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:leetcode348&350之计算两个数组的交集
文章链接:http://soscw.com/index.php/essay/71385.html
文章标题:leetcode348&350之计算两个数组的交集
文章链接:http://soscw.com/index.php/essay/71385.html
评论
亲,登录后才可以留言!