帮帮忙,用java写二分法

帮帮忙,用java写二分法

问题描述:

给定一串递增数列,找到其中两个不同的数字 a[i] 和 a[j],使得a[i] + a[j] = k,并输出较小的那个数

如果有组a[i] 和 a[j] 满足条件,则输出其中数值最小的数,如果没有找到,输出-1
用java编写,能带主函数最好

import java.util.Scanner;
public class Test{
  public static void main(String [] args){
    int a[10] = {1,3,5,9,11,20,30,33,45,68};
    int i,j;
    int k;
    Scanner sc = new Scanner(System.in);
    k = sc.nextInt();
    for(i=0;i<10;i++){
        for(j=0;j<9;j++){
            if(i!=j && a[i]+a[j]==k){
                System.out.print(a[i]+"+"+a[j]+"="+k+"\t");    
                System.out.println(a[i]>a[j]?a[j]:a[i]);
            }    
        }    
    }
    
    }
}

力扣的话,提示一下,公式变换:k-a[i]=a[j],然后哈希查k-a[j]就可以了(没有采纳了,不想写)