题目描述:
有两个整形数组A,B,找出数组A中存在但数组B中不存在的元素,并打印输出(保持原顺序)。
解题思路:
想到的暴力破解的方法就是遍历A中的元素,每遍历到一个,就在B中查找是否存在,时间复杂度为O(n平方)。这样就会联系到在一个数组中查找给定元素,我们可以对这个数组进行排序,排序后进行二分查找即可。
实现:
private static void solution(int[] array1, int[] array2) {
if(array1.length==0 || array1==null) {
return ;
}
Arrays.sort(array2);
for(int i=0;i<array1.length;i++){
if(!hasInArray(array2,array1[i])){
System.out.print(array1[i]+" ");
}
}
}
public static boolean hasInArray(int[] array,int num){
int start =0,end =array.length-1;
while(start<=end){
int mid = start+(end-start)/2;
if(array[mid]==num){
return true;
}
else if(array[mid]>num){
end = mid-1;
}else{
start = mid+1;
}
}
return false;
}