记Java开发笔试算法题
这两天参加了两家小公司的java开发笔试,都遇到了同一个类型的算法题。
给定一个N个元素的数组,在数组中查找两个元素,这两个元素的和等于给定元素K,描述算法设计思想,并实现,数组是已经排好序的数组。
这个题其实思路很清晰,但是我在答题的时候都没有好好描述清晰,代码也不够完善。这里借鉴别的博主的内容,记个笔记。首先用两个指向数组的指针,一个从前往后扫描,一个从后往前扫描,指针记为fist,last,当fist+last<sum,fist++;当fist+last>sum,last–。
public class JavaDemo8 {
public static void main(String args[]){
int data[]={6,15,17,25,29,31,45,50};
printPairSums(data,data.length,56);
}
private static void printPairSums(int data[],int size,int sum){
int first=0;
int last=size-1;
int s=0;
while(first<last){
s=data[first]+data[last];
if(s==sum){
System.out.println("----"+data[first]+"+"+data[last]+"="+sum) ;
first++;
last--;
}else if(s<sum){
first++;
}else {
last--;
}
}
}
}