题目二:
解法一:(Set)
解题思路:这个题我想的就是先把一个数组的值放入一个set中,然后根据另外一个数组的值去set中查找,如果存在,则将这个值放入一个新的set中,注意这里不能放入一个数组中,因为要去重,放入set中就自动去重了。set集合也可以解构赋值。
优化点:首先使用两个集合分别存储两个数组中的元素,然后遍历较小的集合,判断其中的每个元素是否在另一个集合中,如果元素也在另一个集合中,则将该元素添加到返回值。该方法的时间复杂度可以降低到 O(m+n)。
解法二:(排序+双指针)
解题思路:先将两个数组排序,排序之后使用两个指针遍历两个数组,加入结果的数组元素一定是递增的,为了保证加入元素的唯一性,需要判断是否与上一次加入的元素相同,若相同则不加入结果集。
注意:当num1 === num2时,要注意判断结果数组长度是否为0,因为如果不判断的话,后面的条件,result.length - 1就有问题了。或者可以考虑result定义为一个set,而不是数组,最后的之后结构赋值返回数组也行。