版权声明:本文为博主原创文章,未经博主允许不得转载。
难度:容易
要求:
计算两个数组的交
注意事项
每个元素出现次数得和在数组里一样答案可以以任意顺序给出
样例
nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].
思路:
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
public int[] intersection(int[] nums1, int[] nums2) {
if(nums1 == null || nums2 == null ){
return null;
}
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i = 0; i < nums1.length; i++){
int value = nums1[i];
if(map.containsKey(value)){
map.put(value,map.get(value) + 1);
}else{
map.put(value,1);
}
}
List<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < nums2.length; i++){
int value = nums2[i];
if(map.containsKey(value) && map.get(value) > 0){
list.add(value);
map.put(value,map.get(value) - 1);
}
}
int[] result = new int[list.size()];
int index = 0;
for(Integer i : list){
result[index++] = i;
}
return result;
}