金智教育校园招聘笔试

选择题部分

树的前序遍历、中序遍历,排序算法的时间复杂度,虚函数,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));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章