1 最大空间为6的循环队列队头front为3,队尾rear为0,删除一个插入两个元素后的front和rear为多少
2 N个结点的二叉树,有m个结点有两个子结点,有多少个叶子结点。3 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒。
4 有一整数序列,如何求绝对值和最大的连续数字串,写出算法。三.编程题
1.假设有很多段ip段属于教育网的,如何尽快辨别一用户ip是否属于教育网。
2,用java实现二叉树数据。
3.构造AVL树。
2 N个结点的二叉树,有m个结点有两个子结点,有多少个叶子结点。3 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒。
4 有一整数序列,如何求绝对值和最大的连续数字串,写出算法。三.编程题
1.假设有很多段ip段属于教育网的,如何尽快辨别一用户ip是否属于教育网。
2,用java实现二叉树数据。
3.构造AVL树。
A1小鼠喝 500 瓶的
A2小鼠喝 500 瓶的
A11小鼠喝 250 瓶的
A12小鼠喝 250 瓶的
A21小鼠喝 250 瓶的
A21小鼠喝 250 瓶的
...
...
...
最后24小时后根据死掉的小鼠就能推断出哪个有毒
要不老鼠喝不下去了
到时候不知道是喝多了撑死的还是毒死的
但是必需得确保每两个小白鼠实验的瓶子不一样, 比如 xiaobai1 试验了 1# , 2# , 3 #
那么xiaobai2 就不能继续这样实验,而是应该选择别的 ,可以使 4# , 5#,6# 当然如果要求最少
小白鼠的个数的话,应该xiaobai2 实验 2# , 3# , 4# 就是说当 每两个小白鼠之间的实验的瓶子当成一个集合的话,那么这些集合的差和别的小白鼠之间
实验瓶子的集合的差不能够一样乱了 汗 自己把自己整乱了
/*
*有一整数序列,如何求绝对值和最大的连续数字串,写出算法。
*这里我是分成两部分做的,求出和的最大值和最小值 再比较两者的绝对值的大小
*较大的那个即为结果
*下边我给出了求和的最大值,最小值就不给了,楼主自己写下
*/
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;
}
}
2分法绝对不行..
A1,A2没有必要喝的,因为有A11,A12,A21,A22
同理,A1X,A2X也是没必要喝的
同理...
最后,还是999只老鼠..
我在分配的时候说错了
刚才自己琢磨的时候弄出来了 上来说的时候描述错了
这里再说下
1000分 A 500 B 500
1只老鼠喝 A 的 500
A 分 AA 250 AB 250 B 分 BA 250 BB 250;
再来一只喝 AA + BA 的 500;
如此重叠下去
每只老鼠都是喝 500
最后是需要10只老鼠
根据结果可以推出结果
其实看到这到这种题目我就想像到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第几号瓶有毒了。
3:10只小白鼠。这是个二进制的问题。把1000个瓶子用二进制编号,每个小白鼠对应一个二进制位。小白鼠要喝每个编号对应二进制位1的那瓶,每只可怜的小白鼠要喝超过500瓶的药水。24小时后死掉的小白鼠对应的二进制数(死为1,不死为0)就是那瓶有毒药水的编号。
4: 应该是个DP问题。状态包括1至N数列的最大绝对值串、包括第N个元素的最大负值串和包括第N个元素的最大正值串。这些状态都可以根据1至N-1的相关状态值里计算出。