您的位置:首页 > 其它

16年腾讯笔试模拟题

2016-03-26 13:26 253 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  腾讯 模拟题