两数组的交

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;
                  //第三种方法
            HashSet set = new HashSet();  
for(int i : nums1) {  
    set.add(i);  
}  
HashSet set2 = new HashSet();  
for(int j : nums2) {  
  if(set.contains(j)) {  
        set2.add(j);  
    }  
     
Integer[] integer = set2.toArray(new Integer[]{});  
int[] res = new int[set2.size()];  
int m = 0;  
while(m
  {  
      res[m] = integer[m];  
        //System.out.println(res[m]);  
    m++;  
  }  
    return res;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值