没想出特别好的办法,只能二重循环,对a里每个元素,如果不在b里则加到数组c里,最后把a值向c

解决方案 »

  1.   

    如果想代码简单
    放到Vector之类去,
    Vector av=new Vector(); Vector bv=new Vector();
    for(int i=0;i<a.length;i++){
       av.add(a[i]);
    }
    ...//b too.
    av.removeAll(bv);
      

  2.   

    查找好象只能用两个循环。
    我本来想将A合并成一个String,用indexOf,但是还要考虑到
    {"abc","defg","hijk","lmn"}
    {"defg","cde"}这样的问题。
    如果你能保证这种情况很少发生,那么这可能会快一点。
      

  3.   

    大数组排序,小数组排序
    然后删除
    我觉得这样快点
    因为排序的时间复杂度小于O(n**2)
    我记得是O(n*logn/log2)
    所以这样快
      

  4.   

    我觉得排序并不节约时间,按排序的时间代价为O(nlogn)来算(快速排序),这时判断a中一个元素是否在b中平均要O(n/2)=O(n),总共判断n次,所以总共的时间代价为O(nlogn)+O(n^2)=O(n^2),而不排序的代价也是O(n^2)。
      

  5.   

    shine333(shine) 还是比较好的办法
      

  6.   

    对不起,我上面说得有问题,呵呵。“这时判断a中一个元素是否在b中平均要O(n/2)=O(n)”
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~不用O(n)那么长,比如二分法搜索就是O(logn),所以排序后总共时间代价为O(2nlogn)=O(nlogn)<O(n^2),前提是选择合适的排序算法和搜索算法。