金智教育校园招聘笔试

来源:互联网 发布:自动刷屏软件 编辑:程序博客网 时间:2024/05/01 20:34

选择题部分

树的前序遍历、中序遍历,排序算法的时间复杂度,虚函数,TCP/IP协议等等。

总结:小题侧重数据结构,网络协议等一些基础知识。

编程题

用递归方法判断一个数组是不是递增数组

/** *  */package com.su.JinZhi;/** * @title IsIncreaseArray.java * @author Shuai * @date 2016-5-9下午2:39:41 */public class IsIncreaseArray {    public static boolean isIncrease(int[] array,int length){        if(array==null||length<=0)            return false;        if(length==1)            return true;        return (array[length-1]>array[length-2])&&isIncrease(array,length-1);    }    public static void main(String[] args){        int[] array={1,2,3,4,5};        System.out.println(isIncrease(array,array.length));    }}

求一个平衡二叉树的深度

可以理解为编程扩展题

抽取5张牌,判断是不是顺子(是否连续),A:10,J:11,Q:12,K:13,大小王可充当任意数字。

思路:首先把这道题的描述转换成一种计算机语言。
5张牌:5个数的数组。
牌的数字从1-13(不包括大小王)
大小王:可以看成数字0(可看成任意数字,只要和1-13不重复即可)

分析:5张牌除了0(可以有两个),其余数字不能重复,否则就不是顺子(顺序统计)
满足这样的逻辑:min表示5个数中最小的数,max表示5个数中最大的数
当数组中没有0时,max-min==4时,恰好是顺子
当数组中有一个0时,max-min==4或3,恰好是顺子
当数组中有两个0时,max-min==4或3或2,恰好是顺子

其他情况不是顺子。

/** *  */package com.su.JinZhi;/** * @title IsContinuous.java * @author Shuai * @date 2016-5-9下午2:14:37 */public class IsContinuous {    public static boolean isContinuous(int[] array){        if(array==null||array.length!=5)            throw new RuntimeException("输入的不是5个数");        int[] poker_hash=new int[14];//0...13,count        for(int i=0;i<14;i++){            poker_hash[i]=0;        }        int min=13;        int max=1;        for(int i=0;i<5;i++){            if(array[i]!=0&&array[i]>max){                max=array[i];            }            if(array[i]!=0&&array[i]<min){                min=array[i];            }            poker_hash[array[i]]++;        }        for(int i=0;i<5;i++){            if(array[i]!=0&&poker_hash[array[i]]>1)                return false;        }        if(poker_hash[0]==0){            if(max-min==4)                return true;        }        if(poker_hash[0]==1){            if(max-min==4||max-min==3)                return true;        }        if(poker_hash[0]==2){            if(max-min==4||max-min==3||max-min==2)                return true;        }        return false;    }    public static void main(String[] args){        int[] array={0,1,0,4,5};        System.out.println(isContinuous(array));    }}
0 0
原创粉丝点击