1.问题描述
给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中:
answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。
answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组成的列表。
注意:列表中的整数可以按 任意 顺序返回。
示例1:
输入:nums1 = [1,2,3], nums2 = [2,4,6]
输出:[[1,3],[4,6]]
示例2:
输入:nums1 = [1,2,3,3], nums2 = [1,1,2,2]
输出:[[3],[]]
2.算法描述
我们利用暴力法来看一下这个题目:首先考虑一下如何将列表里的整数输入进去,这里我是利用map函数将输入的字符串数字按“,”分开,然后依次转化为整数,再经过for……in遍历后添加至创建列表nums1、nums2中,这样一个列表式的输入就完成了(如:[1, 2, 3, 4])。随后将两个列表里的值依次遍历出来,第一步:遍历nums1中的数来依次判断是否在nums2中(不是则加入列表answer[0]中);第二步:遍历nums2中的数来依次判断是否存在于nums2中(不是则加入answer[1]中)。为了避免列表里的整数存在重复的现象(如输出结果为:[[3, 3], [4, 5]],而期待效果为:[[3], [4, 5]]),我们在遍历时使用set(nums1或者nums2)函数。最后直接输出answer就可以得出想要结果。
3. 实验讨论与结果
找出其中的内在逻辑,并写出过程,带入值,输出结果。
list=map(int,input(":").split(",")) nums1=[] for j in list: nums1.append(j) list1=map(int,input(":").split(",")) nums2=[] for k in list1: nums2.append(k) answer = [[], []] for i in set(nums1): if i not in nums2: answer[0].append(i) for j in set(nums2): if j not in nums1: answer[1].append(j) print(answer)
四.结语
在做这道题时需要特别注意如何将输入的数呈现为所需的列表式;其次,需要站在两个不同的列表角度来判断本列表与对方列表之间存在的不同整数;最后,我们要用set函数来避免最后输出列表中出现重复整数的现象。
作者:代葳
主编:欧洋