c_cpp 从两个排序的数组中找到最接近的一对

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 从两个排序的数组中找到最接近的一对相关的知识,希望对你有一定的参考价值。

// https://www.geeksforgeeks.org/given-two-sorted-arrays-number-x-find-pair-whose-sum-closest-x/
#include <iostream>
using namespace std;

int main() {
    int n,m,x;
    cin >> n >> m;
    int a[n], b[m];
    for (int i=0;i<n;i++)
        cin>>a[i];
    for (int i=0;i<m;i++)
        cin>>b[i];
    cout << "Enter the search element:";
    cin>>x;

    int i=0, j = m-1, s = INT_MAX, l ,r;
    while (i<n && j >= 0){
        int d = abs(x - a[i] - b[j]);
        if ( d < s){
            s = d;
            l = i;
            r = j;
        }
        if (a[i] + b[j] < x && a[i] < b[j])
            i++;
        else if (a[i] + b[j] < x && a[i] > b[j])
            j++;
        else if (a[i] + b[j] > x && a[i] < b[j])
            j--;
        else if (a[i] + b[j] > x && a[i] > b[j])
            i--;
    }
    cout << a[l] << " and " << b[r];
}
// https://www.geeksforgeeks.org/given-two-sorted-arrays-number-x-find-pair-whose-sum-closest-x/
#include <iostream>
using namespace std;

int main() {
    int n,m,x;
    cin >> n >> m;
    int a[n], b[m];
    for (int i=0;i<n;i++)
        cin>>a[i];
    for (int i=0;i<m;i++)
        cin>>b[i];
    cout << "Enter the search element:";
    cin>>x;

    int i=0, j = m-1, s = INT_MAX, l ,r;
    while (i<n && j >= 0){
        int d = abs(x - a[i] - b[j]);
        if ( d < s){
            s = d;
            l = i;
            r = j;
        }
        if (a[i] + b[j] < x)
            i++;
        else
            j--;
    }
    cout << a[l] << " and " << b[r];
}

以上是关于c_cpp 从两个排序的数组中找到最接近的一对的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 找到数组,其总和最接近x

Leetcode 658.找到K个最接近的元素

c_cpp [阵] 3sum最近。给定n个整数的数组S,在S中找到三个整数,使得总和最接近给定数字target。 Retur

leetcode-658 找到K个最接近的元素

PHP 按时间排序数组并找到与 X 数字最接近的匹配项

Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数