起因
组内一小伙伴,发群里的算法题目。
于是我鼓励大家自己写完后PK,看谁更优,本文主要分享我们的几种实现方式
数组类型3种实现方法
for循环对比法
private void intersection(List<Integer> nums1,List<Integer> nums2){
ArrayList list = new ArrayList();
for (int i =0 ;i<nums1.size() ;i++){
for (int j =0 ;j<nums2.size();j++){
Integer o = nums1.get(i);
Integer b = nums2.get(j);
if ( o.equals(b) ){
list.add(o);
nums1.remove(nums1.get(i));
nums2.remove(nums2.get(j));
i--;
break;
}
}
}
//System.out.println(list.toString());
}
HashMap迭代法
public void intersectionHashArray(int[] numsArray1,int[] numsArray2){
HashMap<Integer,Integer> map = new HashMap(100000);
for (int i:numsArray1){
if (map.containsKey(i)){
map.put(i,map.get(i)+1);
}else {
map.put(i,1);
}
}
for (int j:numsArray2){
if (map.containsKey(j)){
list.add(j);
map.put(j,map.get(j)-1);
if (map.