搜索一对离两个已排序数组最近的数的 Java 程序


要查找两个排序数组中最近的数对,Java 代码如下 −

示例

 在线演示

public class Demo {
   void closest_pair(int my_arr_1[], int my_arr_2[], int arr_1_len, int arr_2_len, int sum){
      int diff = Integer.MAX_VALUE;
      int result_l = 0, result_r = 0;
      int l = 0, r = arr_2_len-1;
      while (l<arr_1_len && r>=0){
         if (Math.abs(my_arr_1[l] + my_arr_2[r] - sum) < diff){
            result_l = l;
            result_r = r;
            diff = Math.abs(my_arr_1[l] + my_arr_2[r] - result_l);
         }
         if (my_arr_1[l] + my_arr_2[r] > result_l)
          r--;
         else
          l++;
      }
      System.out.print("The closest pair that matches two arrays is [" + my_arr_1[result_l] + ", " +
      my_arr_2[result_r] + "]");
   }
   public static void main(String args[]){
      Demo my_ob = new Demo();
      int my_arr_1[] = {56, 78, 99, 11};
      int my_arr_2[] = {33, 12, 69, 87};
      int arr_1_len = my_arr_1.length;
      int arr_2_len = my_arr_2.length;
      int val = 79;
      my_ob.closest_pair(my_arr_1, my_arr_2, arr_1_len, arr_2_len, val);
   }
}

输出

The closest pair that matches two arrays is [56, 33]

一个名为 Demo 的类包含一个名为 ‘closest_pair’ 的函数,该函数遍历两个数组,并检查哪一对数之和接近于之前指定的一个数字。数组中的这一对作为输出返回。在主函数中,定义了 Demo 类的实例,定义了数组,并将它们的长分别赋给了两个变量。通过传递数组、它们的长度和值来调用函数。在控制台中显示相关消息。

更新于: 08-Jul-2020

257 次浏览

开启你的 职业生涯

完成课程即可获得认证

获取开始
广告