寻找两个数组中共同重复的数字,并将他们装到一个数组中
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
// 注释部分为最长的具有相同顺序的最长数组
// ArrayList<Integer> list = new ArrayList<>();
// for(int i=0;i<nums1.length;i++){
// for(int j=0;j<nums2.length;j++){
// if(nums1[i] == nums2[j]){
// int tempi = i;
// int tempj = j;
// List<Integer> tempList = new ArrayList<>();
// while(tempi < nums1.length && tempj < nums2.length && nums1[tempi] == nums2[tempj]){
// tempList.add(nums1[tempi]);
// tempi++;
// tempj++;
// }
// if(tempList.size() > list.size()){
// list = new ArrayList<>(tempList);
// }
// }
// }
// }
// int[] res = new int[list.size()];
// for(int i=0;i<list.size();i++){
// res[i] = list.get(i);
// }
// return res;
Map<Integer,Integer> map = new HashMap<>();
List<Integer> list= new ArrayList<>();
for(int i=0;i<nums1.length;i++){
map.put(nums1[i],map.getOrDefault(nums1[i],0) + 1);
}
for(int i=0;i<nums2.length;i++){
if(map.containsKey(nums2[i]) && map.get(nums2[i]) > 0){
list.add(nums2[i]);
map.put(nums2[i],map.get(nums2[i]) - 1);
}
}
int[] res = new int[list.size()];
for(int i=0;i<list.size();i++){
res[i] = list.get(i);
}
return res;
}
}