lintcode上做到一道题目,是两数组的交,要求
我用了三种方法来做,结果提交全部超时,但是结果是可以跑出来的,如下:
package lintcode;
//import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class Intersection {
public int[] intersection(int[] nums1,int[] nums2)
{
// Arrays.sort(nums1);
// Arrays.sort(nums2);
// List r = new ArrayList();
// int i = 0;
// int j = 0;
// while(i < nums1.length && j < nums2.length)
// {
// if(nums1[i] == nums2[j])
// {
// r.add(nums1[i]);
// i++;
// j++;
// System.out.println("i="+i+"j="+j);
// }
// else if(nums1[i] < nums2[j])
// {
// i++;
// }
// else{
// j++;
// }
// }
// System.out.println();
// HashSet h
=
new
HashSet(r);
//
r.clear();
//
r.addAll(h);
for(int k = 0 ; kk;l--)
{
if(r.get(k).equals(r.get(l)))
r.remove(k);
}
System.out.println("删除的shu"+r.get(k));
}
// int res[] = new int[r.size()];
// System.out.println(r.size());
// for(int k = 0 ; k < r.size(); k++)
// {
// res[k] = (int) r.get(k);
// System.out.print(res[k]+" ");
// }
// return res;
//
HashMap map = new HashMap();
//
//
for(int i =0;i
//
if(!map.containsKey(nums1[i])){ // 唯一映射
//
map.put(nums1[i],1);
//
}
//
}
//
ArrayList A = new ArrayList();
//
for(int i=0;i
//
if(map.containsKey(nums2[i])){ // 相同元素
//
A.add(nums2[i]);
//
map.remove(nums2[i]); // 去除相同元素
//
}
//
}
//
Integer[] res = (Integer[]) A.toArray();
//
for(int i=0;i
//
res[i] = A.get(i);
//
System.out.print(res[i]+" ");
//
}
//
return res;
for(int i : nums1) {
}
HashSet set2 = new HashSet();
for(int j : nums2) {
}
Integer[] integer = set2.toArray(new Integer[]{});
int[] res = new int[set2.size()];
int m = 0;
while(m