二分查找与二分答案-java实现
二分查找
public static void main(String[] args){
int n,m;
Integer[] a = new Integer[1000005];
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
for(int i = 1;i<=n;i++){
a[i]=sc.nextInt();
}
for(int i = 1;i<=m;i++){
int target = sc.nextInt();
int l = 1;int r = n;
while(r-l>1){
int mid = (l+r)/2;
if(target <= a[mid]){
r = mid;
}else{
l = mid;
}
}
int ans;
if(a[l]==target) ans = l;
else if(a[r]==target) ans = r;
else ans = -1;
System.out.print(ans +" ");
}
}二分答案
例题
代码实现
最后更新于