题目与思路
这个题目可以用大小为1000的数组,因为限制了变量大小。我用的是set,感觉这个才是本意。
下面代码是用set实现的hash结构。先用set1存储nums1中的去重元素,然后用set2存储结果集
最后将set转为array用了两种方式,一是lamda表达式,二是传统转换迭代器方式
代码
class Solution {public int[] intersection(int[] nums1, int[] nums2) {//时空复杂度都是o(n)//用set实现哈希表,数组不知道定义多大的Set<Integer> s1 = new HashSet();Set<Integer> s2 = new HashSet();for(int i:nums1){s1.add(i);}for(int j:nums2){if(s1.contains(j))s2.add(j);}//法一、lamadareturn s2.stream().mapToInt(x->x).toArray();//法二,笨一点// int[] res = new int[s2.size()];// int i = 0;// Iterator it = s2.iterator();// while(it.hasNext()){// res[i++] = (int)it.next();// }// return res;}
}