अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी


अडचण पातळी सोपे
वारंवार विचारले ऍमेझॉन बेलझाबर हनिवेल Hulu , NVIDIA रॉबिन हूड केकाटणे
अरे हॅश

अ मध्ये सकारात्मक नकारात्मक मूल्यांच्या जोडीमध्ये अॅरे समस्या आम्ही वेगळ्या पूर्णांकाची अ‍ॅरे ए दिली आहे, अ‍ॅरेमध्ये अस्तित्त्वात असलेल्या संख्येचे सकारात्मक मूल्य आणि नकारात्मक मूल्य असलेल्या सर्व जोड्या मुद्रित करा. आम्हाला त्यांच्या घटनांच्या क्रमाने जोड मुद्रित करण्याची आवश्यकता आहे. एक जोडी ज्यांचे कोणतेही घटक प्रथम दिसतात ते प्रथम मुद्रित केले जावे.

उदाहरण

इनपुट:

A[]={2, 3, -1, -2, 9, 1}

आउटपुट:

Pairs having positive value and negative in the array are: -2 2 -1 1

दृष्टीकोन 1: क्रूर शक्ती

इनपुट अ‍ॅरे मधील प्रत्येक घटकासाठी [i], thanA [i] अ‍ॅरेमध्ये मी पेक्षा जास्त असलेल्या इंडेक्ससह उपस्थित असल्यास हे जोडी प्रिंट करते ते तपासा.

अल्गोरिदम

  1. मी 0 ते एन -1 श्रेणीतील लूप चालवा
    1. I + 1 ते n-1 श्रेणीतील j साठी लूप चालवा
      1. जर ए [i] बरोबर -ए [जे] असेल तर ही जोडी मुद्रित करा.
    2. परत.

अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी शोधण्यासाठी सी ++ प्रोग्राम

#include <bits/stdc++.h>
using namespace std;
void printPairs(vector<int> &A)
{
    int n = A.size();
    cout << "Pairs having positive value and negative in the array are: ";
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (A[i] == -A[j])
            {
                if (A[i] <= 0)
                {
                    cout << A[i] << " " << (-A[i]) << " ";
                }
                else
                {
                    cout << (-A[i]) << " " << A[i] << " ";
                }
            }
        }
    }
    cout << endl;
    return;
}
int main()
{
    vector<int> A = {2, 3, -1, -2, 9, 1};
    printPairs(A);
    return 0;
}
Pairs having positive value and negative in the array are: -2 2 -1 1

अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी शोधण्यासाठी जावा प्रोग्राम

public class Main
{
    static void printPairs(int[] A)
    {
        int n = A.length;
        System.out.print("Pairs having positive value and negative in the array are: ");
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                if (A[i] == -A[j])
                {
                    if (A[i] <= 0)
                    {
                       A[i]=-A[i];
                    }
                    System.out.print(A[i]+" -"+A[i]+" ");
                }
            }
        }
        return;
    }
  public static void main(String[] args) {
    int[] A={2, 3, -1, -2, 9, 1};
    printPairs(A);
  }
}
Pairs having positive value and negative in the array are: 2 -2 1 -1

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

वेळ गुंतागुंत

आम्ही दोन आकाराचे लूप वापरत आहोत, दोन्ही आकार एन. तर एकूण वेळ जटिलता आहे ओ (एन ^ 2)

जागेची जटिलता

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

दृष्टीकोन 2: हॅशिंग वापरुन

मुख्य कल्पना

हॅश टेबलमध्ये अ‍ॅरेमध्ये कोणते घटक आहेत ते आपण संचित करू शकतो. आता अ‍ॅरेमधील प्रत्येक घटकासाठी [i], हॅश टेबलमध्ये –A [i] चे मूल्य 1 आहे की नाही ते तपासा, ते 1 असेल तर ही जोड प्रिंट करा आणि A [i] आणि –A चे घटते मूल्य [i] हॅश टेबलमध्ये 1 ने जेणेकरून आम्ही तीच जोडी दोनदा छापणार नाही.

अल्गोरिदम

  1. हॅश टेबल प्रारंभ करा.
  2. हॅश टेबलमध्ये प्रत्येक घटकाची वारंवारता संग्रहित करा.
  3. मी 0 ते एन -1 श्रेणीतील लूप चालवा
    1. जर हॅश टेबलमध्ये [A [i] चे मूल्य 1 असेल तर ही जोडी छापा आणि A [i] आणि –A [i] चे मूल्य 1 ने कमी करा.

उदाहरणासह समजून घ्या

चला इनपुट अ‍ॅरे A [] = {2, 3, -1, -2, 9, 1 take घेऊ

तर आमचे हॅश टेबल हे असे दिसते:

अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी

आता iteरेचे पुनरावृत्ती करू.

केशरी रंग चालू निर्देशांक दर्शविते,

अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी

अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी

तर अंतिम आउटपुटः -2 2 -1 1

अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी शोधण्यासाठी सी ++ प्रोग्राम

#include <bits/stdc++.h>
using namespace std;
void printPairs(vector<int> &A)
{
    int n = A.size();
    unordered_map<int, int> hash_table;
    for (int i = 0; i < n; i++)
    {
        hash_table[A[i]]++;
    }
    cout << "Pairs having positive value and negative in the array are: ";
    for (int i = 0; i < n; i++)
    {
        if (hash_table[-A[i]] == 1)
        {
            if (A[i] <= 0)
            {
                cout << A[i] << " " << (-A[i]) << " ";
            }
            else
            {
                cout << (-A[i]) << " " << A[i] << " ";
            }
            hash_table[A[i]]--;
            hash_table[-A[i]]--;
        }
    }
    cout << endl;
    return;
}
int main()
{
    vector<int> A = {2, 3, -1, -2, 9, 1};
    printPairs(A);
    return 0;
}
Pairs having positive value and negative in the array are: -2 2 -1 1

अ‍ॅरेमध्ये सकारात्मक नकारात्मक मूल्यांची जोडी शोधण्यासाठी जावा प्रोग्राम

import java.util.*; 
public class Main
{
    static void printPairs(int[] A)
    {
        int n = A.length;
        HashMap<Integer,Integer> hash_table = new HashMap<Integer,Integer>();
        for (int i = 0; i < n; i++)
        {
            hash_table.put(A[i],1);
        }
        System.out.print("Pairs having positive value and negative in the array are: ");
        for (int i = 0; i < n; i++)
        {
            if(hash_table.containsKey(-1*A[i]) && hash_table.get(-1*A[i])==1)
            {
                if (A[i] <= 0)
                {
                    A[i]*=-1;
                }
                System.out.print(A[i]+" -"+A[i]+" ");
                hash_table.put(A[i],0);
                hash_table.put(-1*A[i],0);
            }
        }
        return;
    }
  public static void main(String[] args) {
    int[] A={2, 3, -1, -2, 9, 1};
    printPairs(A);
  }
}
Pairs having positive value and negative in the array are: -2 2 -1 1

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

वेळ गुंतागुंत

आम्ही संपूर्ण अ‍ॅरे दोनदा पुनरावृत्ती करत आहोत, म्हणून वेळ जटिलता आहे ओ (एन).

जागेची जटिलता

आम्ही हॅश टेबल वापरत आहोत, म्हणून जागेची जटिलता आहे ओ (एन).

संदर्भ