今天上午去某公司应聘java程序员
限定用java代码,3个笔试题如下
1.Queue
请书写一个Queueleukemia。支持push,pop,size方法。当Queue中已经没有元素而试图pop时,必须以适当方式向用户指明错误。不允许使用标准库中的Queue来完成此任务。要求表的所有操作都是常数时间的。2.Random Shuffle
现有一副扑克,不包括大小王,写1个函数,可以将扑克牌洗乱,要求洗牌之后每张都不能在原来的位置出现。要求函数的操作时间为常数,并能以等概率发生出全部可能的排列。3.Set intersection
给定两个已排序的整形列表List<Integer>List0与List1,求交集。要求速度最快,额外占用空间最少的算法。
不要求最优化 只要正确就行 欢迎大家集思广益

解决方案 »

  1.   

    第三题用set集合应该很快的,,我自己写的给你参考import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;public class Test {
    public static void main(String[] args) {
    List<Integer> list=new ArrayList(5);
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    List<Integer> list2=new ArrayList(2);
    List<Integer> list3=new ArrayList(5);
    list2.add(1);
    list2.add(5);
    Set<Integer> set=new HashSet();
    set.addAll(list);
    for(Integer in:list2){
    if(!set.add(in))
    list3.add(in);
    }
    for(Integer in:list3){
    System.out.println(in);
    }

    }
    }