د دوه ترتیب شوي اريونو څخه جوړه جوړه کړئ چې مجموعه د ورکړل شوي ارزښت x سره مساوي ده


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي د بانک بازار سیسکو د فراه تاريخي کلا Honeywell پیرو یو Roblox د ټیکسي 4 سوري Yandex
پیشه هاش ترتیب کول STL

ستونزه بیان

"له دوه څخه جوړه جوړه کړئ ترتیب شوی هغه سري چې مجموعه یې د ورکړل شوي ارزښت سره مساوي ده "ستونزه بیانوي چې تاسو ته د دوه ترتیب ډول وړو وړو وړو سرونو او دقیق په نامه د یو عدد ارزښت ورکول کیږي. د ستونزې بیان د جوړه جوړه شمیره لټولو لپاره غوښتنه کوي کوم چې د ورکړل شوي ارزښت سره سم دي.

بېلګه

arr1[] = {1, 6, 8, 11}

arr2[] = {1, 3, 5, 9}

sum = 9
2

 

تشریح: ځکه چې په ورکړل شوي صف کې ټولټال 2 جوړه شتون لري چې (6 ، 3) او (8 ، 1) دي. ځکه چې نورې جوړې د مطلوب مقدار څخه لوی یا لږ لري.

arr1[] = {3, 5, 11, 14};

arr2[] = {2, 4, 5, 11}

sum = 16
3

 

توضیحات: ځکه چې په ورکړل شوي قطار کې ټولټال 3 جوړه شتون لري چې (5 ، 11) ، (11 ، 5) ، او (14 ، 2) دي.

د دوه ترتيب شوي بraو څخه جوړه شمارو ته الګوریتم چې جمع د ورکړل شوي ارزښت سره مساوي دي x

1. Set count and left to 0, and right to n-1 where n is the length of the array.
2. While left is less than m and right is greater than equal to 0, repeat the following the steps-
    1. If the sum of arr[left] and arr[right] is equal to the given value, then increase the value of count and left by 1 and decrease the value of right by 1.
    2. Else check if the addition of arr[left] and arr[right] is less than the given value sum, then increase the value of left by 1.
    3. Decrease the value of right by 1 if the addition is greater than the sum.
3. Return the count value after traversing the arrays.

تشریح

تاسو ته دوه ترتيب شوي عدد درکول کيږي تیرونه او د عدد پواسطه ارزښت. او له موږ څخه غوښتنه کیږي چې ومومي چې څومره احتمالي جوړه جوړه شي کوم چې د ورکړل شوي ارزښت سره سم دي. نو ، موږ د بائنري لټون میتود په توګه ورته ورته تخنیک کارولو ته ځو. دا هم لامل دی چې موږ په ترتیب کې زیاتوالي په پایله کې ارزښتونه اخلو. پدې توګه ، موږ به وکولی شو د دې پوښتنې په حلولو کې دا تخنیک پلي کړو. که نه نو موږ به د صفونو ترتیب کړی وی.

موږ د دې ارزښت ټاکل کوو حساب تر 0 پورې. ځکه چې موږ به د شمېرنې دغه ارزښت 1 ته لوړ کړو که چیرې موږ اړین جوړه ومومو. یوه جوړه به دوه ارزښتونه ولري. البته ، موږ به وګورو چې ایا په جوړه کې د دې ارزښت اضافه د ورکړل شوي ارزښت مجموعي سره مساوي ده که نه. که دا ریښتیا وي موږ به د شمېرنې ارزښت 1 لخوا ډیروو. موږ به یو پداسې حال کې چې پدې ډول. بیا به دا لاړ شي تر هغه پورې چې د m (m ارزښتونه د یو سرني اوږدوالي وي) او r (چیرې چې r د یو صف له اوږدوالي څخه لږ وي) د 0 سره مساوي وي.

په لوپ کې ، موږ به وګورو چې آیا د جوړې ارزښت ورکړل شوي ارزښت ته اضافه کوي. بیا ، موږ یوه جوړه وموندله کله چې دا حالت سم شي. موږ به لوپ ته دوام ورکړو که چیرې مجموعه د ورکړل شوي ارزښت څخه لږ وي. بیا به موږ د ارزښت کچه ​​لوړه کړو l د 1 په واسطه موږ یوازې د ارزښت کچه ​​راکمه کوو r په 1. په پای کې ، موږ به د شمېرنې ارزښت بیرته راستون کړو.

د دوه ترتیب شوي اريونو څخه جوړه جوړه کړئ چې مجموعه د ورکړل شوي ارزښت x سره مساوي ده

کوډ

C ++ کوډ د هغو جوڑونو شمیرلو لپاره چې جمله د دوه ترتیب شوي تیرونو څخه x ده

#include<iostream>

using namespace std;

int getPairofsum(int arr1[], int arr2[], int m, int n, int sum)
{
    int count = 0;
    int left = 0, right = n - 1;

    while (left < m && right >= 0)
    {
        if ((arr1[left] + arr2[right]) == sum)
        {
            left++;
            right--;
            count++;
        }
        else if ((arr1[left] + arr2[right]) < sum)
            left++;
        else
            right--;
    }
    return count;
}
int main()
{
    int arr1[] = {1, 6, 8, 11};
    int arr2[] = {1, 3, 5, 9};
    int m = sizeof(arr1) / sizeof(arr1[0]);
    int n = sizeof(arr2) / sizeof(arr2[0]);
    int sum = 9;
    cout << "Count = "<< getPairofsum(arr1, arr2, m, n, sum);
    return 0;
}
Count = 2

 

جاوا کوډ د جوړو شمیر لپاره چې جمله د دوه ترتیب شوي تیرونو څخه x ده

class PairofSum
{
    public static int getPairofsum(int arr1[],int arr2[], int m, int n, int sum)
    {
        int count = 0;
        int left = 0, right = n - 1;

        while (left < m && right >= 0)
        {
            if ((arr1[left] + arr2[right]) == sum)
            {
                left++;
                right--;
                count++;
            }
            else if ((arr1[left] + arr2[right]) < sum)
                left++;
            else
                right--;
        }
        return count;
    }
    public static void main (String[] args)
    {
        int arr1[] = {1, 6, 8, 11};
        int arr2[] = {1, 3, 5, 9};
        int m = arr1.length;
        int n = arr2.length;
        int sum = 9;
        System.out.println( "Count = "+ getPairofsum(arr1, arr2, m, n, sum));
    }
}
Count = 2

 

د پیچلتیا تحلیل

د وخت پیچلتیا

O (m + n) هلته "م" او "n" په arr1 او arr2 کې د عناصرو شمیر دی. ځکه چې اعظمي حد ته موږ سفر کولی شو m + n دی.

د ځای پیچلتیا

O (1) ځکه چې اضافي ځای ته اړتیا نشته. پدې توګه د فضا پیچلتیا ترلاسه کیږي.