去哪儿网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