1 最大空间为6的循环队列队头front为3,队尾rear为0,删除一个插入两个元素后的front和rear为多少
2 N个结点的二叉树,有m个结点有两个子结点,有多少个叶子结点。3 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒。
4 有一整数序列,如何求绝对值和最大的连续数字串,写出算法。三.编程题
1.假设有很多段ip段属于教育网的,如何尽快辨别一用户ip是否属于教育网。
2,用java实现二叉树数据。
3.构造AVL树。

解决方案 »

  1.   

    2分法
    A1小鼠喝 500 瓶的
    A2小鼠喝 500 瓶的
    A11小鼠喝 250 瓶的
    A12小鼠喝 250 瓶的
    A21小鼠喝 250 瓶的
    A21小鼠喝 250 瓶的
    ...
    ...
    ...
    最后24小时后根据死掉的小鼠就能推断出哪个有毒
      

  2.   

    题目中的 尝一点就over是关键
    要不老鼠喝不下去了 
    到时候不知道是喝多了撑死的还是毒死的
      

  3.   

    小白鼠因该这样解:每个小白鼠去 实验 n 个瓶子,
    但是必需得确保每两个小白鼠实验的瓶子不一样, 比如 xiaobai1 试验了 1# , 2# , 3 #
    那么xiaobai2 就不能继续这样实验,而是应该选择别的 ,可以使 4# , 5#,6# 当然如果要求最少
    小白鼠的个数的话,应该xiaobai2 实验 2# , 3# , 4# 就是说当 每两个小白鼠之间的实验的瓶子当成一个集合的话,那么这些集合的差和别的小白鼠之间
    实验瓶子的集合的差不能够一样乱了 汗  自己把自己整乱了 
      

  4.   

    第4题public class Test { public static void main(String[] args) {
    /*
     *有一整数序列,如何求绝对值和最大的连续数字串,写出算法。
     *这里我是分成两部分做的,求出和的最大值和最小值 再比较两者的绝对值的大小
     *较大的那个即为结果
     *下边我给出了求和的最大值,最小值就不给了,楼主自己写下
    */
    int[] n = {1,-2,4,-2,40,6,-9,-10,-11,134,-5};
    System.out.println(getMaxSum(n));
    }
    private static int getMax(int x, int y){
    return x > y ? x : y;
    }
    public static int getMaxSum(int[] nums){
    int nStart = nums[nums.length - 1];
    int nAll = nStart;
    for(int i = nums.length - 2; i>=0;i--){
    nStart = getMax(nums[i], nStart + nums[i]);
    nAll = getMax(nStart, nAll);
    }
    return nAll;
    }
    }
      

  5.   


    2分法绝对不行..
    A1,A2没有必要喝的,因为有A11,A12,A21,A22
    同理,A1X,A2X也是没必要喝的
    同理...
    最后,还是999只老鼠..
      

  6.   

    感谢下 24 楼
    我在分配的时候说错了
    刚才自己琢磨的时候弄出来了 上来说的时候描述错了
    这里再说下
    1000分 A 500  B 500
    1只老鼠喝 A 的 500
    A 分 AA 250 AB 250 B 分 BA 250 BB 250;
    再来一只喝  AA + BA 的  500;
    如此重叠下去
    每只老鼠都是喝 500
    最后是需要10只老鼠
    根据结果可以推出结果
      

  7.   

    二分法不行。因为要在24小时内鉴别出来。
    其实看到这到这种题目我就想像到2进制。
    准备10个空瓶(A)。然后给1000瓶(B)分别编号。
    取B1,1的二进制->0001,在A1里面滴一滴;
    取B2,2的二进制->0010,在A2里面滴一滴;
    取B3,3的二进制->0011,在A1、A2分别滴一滴;
    取B4,4的二进制->0100,在A3滴一滴;

    滴完之后,分别拿A的10个瓶喂10只老鼠。
    看那几只死了。就知道B第几号瓶有毒了。
      

  8.   

    2:m+1个叶子节点,答案跟N无关。可以想象成一个m+1人的淘汰赛,每次两人比赛淘汰一人,最终经过m场比赛淘汰m个人决出冠军。如果存在X个单子节点的父节点,可以虚构出X个叶子节点,这样双子节点的父节点多出X个,最终结果再减去X个虚构的叶子节点,同样是m+1个叶子节点。
    3:10只小白鼠。这是个二进制的问题。把1000个瓶子用二进制编号,每个小白鼠对应一个二进制位。小白鼠要喝每个编号对应二进制位1的那瓶,每只可怜的小白鼠要喝超过500瓶的药水。24小时后死掉的小白鼠对应的二进制数(死为1,不死为0)就是那瓶有毒药水的编号。
    4: 应该是个DP问题。状态包括1至N数列的最大绝对值串、包括第N个元素的最大负值串和包括第N个元素的最大正值串。这些状态都可以根据1至N-1的相关状态值里计算出。