16年腾讯笔试模拟题

来源:互联网 发布:java循环读取txt文件 编辑:程序博客网 时间:2024/05/20 04:31

1、利用递归计算n位的格雷码greycode:二进制数据,相邻的两个元素只有一位不同

public static List<String> getGreyCode(int n){        List<String> list=new ArrayList<String>();        if(n==0)return list;        if(n==1){            list.add("0");            list.add("1");            return list;        }        List<String> last=getGreyCode(n-1);        int mark=0;        for(String str:last){            if(mark%2==0){                list.add("0"+str);                list.add("1"+str);            }else{                list.add("1"+str);                list.add("0"+str);            }            mark++;        }        return list;    }

2、找到数组中出现大于n/2次的元素

public static int findMajor(int []val){        if(val.length==1)return val[0];        int value=val[0];        int count=1;        for(int i=1;i<val.length;i++){            if(val[i]==value)count++;            else count--;            if(count==0){                value=val[i];                count++;            }        }        return value;    }

3、大整数相乘

public static String calculate(String str1,String str2){        int len1=str1.length();        int len2=str2.length();        int val[]=new int[len1+len2];        for(int i=len1-1;i>=0;i--)            for(int j=len2-1;j>=0;j--){                val[i+j+1]+=Integer.parseInt(str1.charAt(i)+"")*Integer.parseInt(str2.charAt(j)+"");                val[i+j]+=val[i+j+1]/10;                val[i+j+1]=val[i+j+1]%10;            }        String str=Arrays.toString(val);        return str;    }
0 0