去哪儿网2015春季校招笔试--回忆版
第一次做笔试题,好激动。今年研发类的有三道题目,干净利落,比较喜欢去哪儿的题目类型,晚上回去做腾讯的在线笔试就比较坑了,各种多选与程序天空,各种C++语法。。。无力吐槽,C++学的太菜了。奋斗了一个半小时做出了两题,感觉也还行,谁知今天在电脑上跑一跑,两道都有问题!不管怎么说,大体思路是对的。下面把这几道题贴出来,希望对大家有一定的借鉴作用,欢迎拍砖。
public static int binarySort(int arr[],int target)
{
int start=0,end=arr.length-1;
int mid=0;
while(start<=end)
{
mid=(start+end)/2;
if(arr[mid]==target)
return mid;
if(target>arr[mid]&&target>arr[end])
end=mid-1;
else if(target<arr[mid]&&target<arr[start])
start=mid+1;
else if(target>=arr[start]&&target<arr[mid])
end=mid-1;
else if(target<=arr[end]&&target>arr[mid])
start=mid+1;
}
return -1;
}public static String decode(String str)
{
StringBuilder sBuilder =new StringBuilder();
StringBuilder sbTemp=new StringBuilder();
String strTemp=null;
int num=0;
int len=str.length();
char ch;
for(int i=0;i<len;i++)
{
while(true)
{
ch=str.charAt(i);
if((ch>'9'||ch<'0')&&i<len)
{
sbTemp.append(ch);
i++;
}else if(i<len)//修改前只考虑了个位数,题目要求数字是不超过整型的最大值。
{
while(ch>='0'&&ch<='9')
{
num=num*10+ch-'0';
i++;
if(i<len)
ch=str.charAt(i);
else
break;
}
if((ch>'9'||ch<'0'))
i--;
break;
}
}
strTemp=sbTemp.toString();
for(int j=0;j<num;j++)
sBuilder.append(strTemp);
num=0;
sbTemp.delete(0, sbTemp.length());
}
return sBuilder.toString();
}public class RangePrices
{
public static List<List<Integer>>rangePrices(int arr[][])
{
int start1=arr[0][0],end1=arr[0][1],num1=arr[0][2];
int start2=arr[1][0],end2=arr[1][1],num2=arr[1][2];
List<List<Integer>>list=new ArrayList<List<Integer>>();
List<Integer>list1=new ArrayList<Integer>();
List<Integer>list2=new ArrayList<Integer>();
for(int i=0;i<arr[0].length;i++)
{
list1.add(arr[0][i]);
list2.add(arr[1][i]);
}
list.add(list1);
list.add(list2);
int min=num1<num2?num1:num2;
if(num1==num2)
{
if(end1>start2)
{
if(end1>end2)
list.remove(1);
else
{
list.get(0).set(1, end2);
list.remove(1);
}
}
}else
{
if(end1>start2)
{
if(end1<end2)
{
if(num1==min)
{
list.get(1).set(0, end1+1);
}
else
{
list.get(0).set(1, start2-1);
}
}
else if(end1>end2)
{
if(num1==min)
list.remove(1);
else
{
list.get(0).set(1, start2-1);
List<Integer>list3=new ArrayList<Integer>();
list3.add(start2);
list3.add(end2);
list3.add(num2);
list.add(1, list3);
list.get(2).set(0, end2+1);
list.get(2).set(1, end1);
list.get(2).set(2, num1);
}
}
}
}
return list;
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
int arr[][]=new int[2][3];
arr[0]=new int[]{1,30,250};
arr[1]=new int[]{20,60,250};
List<List<Integer>>list=RangePrices.rangePrices(arr);
for(int i=0;i<list.size();i++)
{
List<Integer>temp=list.get(i);
for(int j=0;j<temp.size();j++)
System.out.print(temp.get(j)+" ");
System.out.println();
}
}
}原文:http://blog.csdn.net/mnmlist/article/details/44541241