दोन क्रमवारी लावलेल्या अ‍ॅरेमधील जोडांची गणना करा ज्यांची बेरीज दिलेल्या मूल्याच्या x समान आहे  


अडचण पातळी सोपे
वारंवार विचारले बँकबाजार सिस्को किल्ला हनिवेल पीएयू Roblox टॅक्सी 4 सुअर यांडेक्स
अरे हॅश वर्गीकरण एसटीएल

समस्या विधान  

“दोन जोड्या मोजा क्रमवारी लावली अ‍ॅरे ज्यांची बेरीज दिलेल्या मूल्या x समान आहे "समस्येमध्ये असे म्हटले आहे की आपल्याला दोन क्रमांकाचे अ‍ॅरे आणि बेरीज एक पूर्णांक मूल्य दिले जाते. प्रॉब्लेम स्टेटमेंटमध्ये दिलेल्या मूल्यापर्यंत जोडीची एकूण संख्या शोधण्यास सांगते.

उदाहरण  

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

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

sum = 9
2

 

स्पष्टीकरणः कारण दिलेल्या rayरेमध्ये एकूण (,,)) आणि (,, १) दोन जोड्या आहेत. कारण इतर जोड्यांमध्ये आवश्यक बेरीजपेक्षा मोठी किंवा कमी रक्कम असते.

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

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

sum = 16
3

 

स्पष्टीकरणः कारण दिलेल्या rayरेमध्ये (3, 5), (11, 11) आणि (5, 14) एकूण 2 जोड्या आहेत.

दोन क्रमवारी लावलेल्या अ‍ॅरेमधील जोडांची गणना करण्यासाठी अल्गोरिदम ज्याची बेरीज दिलेल्या मूल्या 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 ने वाढवू. आम्ही कार्यान्वित करू पळवाट असताना या पद्धतीने. मग एम (एम अ‍ॅरेची लांबी होईपर्यंत) आणि आर (जेथे आर अ‍ॅरेच्या लांबीपेक्षा कमी असेल) पर्यंत 0 पर्यंतच्या व्हॅल्यू पर्यंत जात नाही.

लूपमध्ये जोडीचे मूल्य दिलेल्या मूल्यापर्यंत जोडते की नाही ते तपासू. त्यानंतर जेव्हा ही परिस्थिती खरी होईल तेव्हा आम्हाला एक जोडपी सापडली आहे. दिलेल्या मूल्यापेक्षा बेरीज कमी असल्यास आम्ही पळवाट सुरू ठेवू. मग आम्ही त्याचे मूल्य वाढवू l 1 अन्यथा आम्ही फक्त त्याचे मूल्य कमी करू r १. शेवटी. आम्ही मोजण्याचे मूल्य परत करू.

दोन क्रमवारी लावलेल्या अ‍ॅरेमधील जोडांची गणना करा ज्यांची बेरीज दिलेल्या मूल्याच्या x समान आहेपिन

कोड  

दोन जोडलेल्या अ‍ॅरेमधून ज्यांची बेरीज x आहे अशा जोड्यांची गणना करण्यासाठी C ++ कोड

#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

 

गुंतागुंत विश्लेषण  

वेळ कॉम्प्लेक्सिटी

ओ (एम + एन) जेथे "M" आणि “एन” एआर 1 आणि एआर 2 मधील घटकांची संख्या आहे. कारण आम्ही प्रवास करू शकणारी जास्तीत जास्त मीटर + एन आहे.

स्पेस कॉम्प्लेक्सिटी

ओ (1) अतिरिक्त जागेची आवश्यकता नसल्यामुळे. अशा प्रकारे निरंतर जागेची जटिलता प्राप्त होते.