சோடிகளின் வரிசை கொடுக்கப்பட்டால் அதில் உள்ள அனைத்து சமச்சீர் ஜோடிகளையும் கண்டுபிடி


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது அமேசான் கேப்ஜெமினி சிஸ்கோ ஃப்ரீசார்ஜ் மூன்ஃப்ராக் ஆய்வகங்கள் வேலை Xome
அணி ஹாஷ்

அனைத்து சமச்சீர் ஜோடிகளையும் கண்டுபிடி - உங்களுக்கு சில ஜோடிகள் வழங்கப்படுகின்றன வரிசை. அதில் உள்ள சமச்சீர் ஜோடிகளை நீங்கள் கண்டுபிடிக்க வேண்டும். ஜோடிகளில் (a, b) மற்றும் (c, d) ஜோடிகளில் 'b' 'c' க்கு சமம் மற்றும் 'a' என்பது 'd' க்கு சமம், அதாவது (1) சமச்சீர் ஜோடி சமச்சீர் என்று கூறப்படுகிறது. , 2) என்பது சமச்சீர் ஜோடி (2, 1).

உதாரணமாக

சோடிகளின் வரிசை கொடுக்கப்பட்டால் அதில் உள்ள அனைத்து சமச்சீர் ஜோடிகளையும் கண்டுபிடி

{{11, 20},{30,40},{4,5},{5,4},{40,30}}
(4, 5) (30, 40)

அனைத்து சமச்சீர் ஜோடிகளையும் கண்டறிய வழிமுறை

  1. ஒரு அறிவிக்கவும் ஹாஷ்மேப்.
  2. போது i <n (வரிசையின் நீளம்)
    1. தொகுப்பு முதல் மதிப்பு வரிசைப்படுத்த [i] [0] மற்றும் இரண்டாவது மதிப்பு to arr [i] [1].
    2. இரண்டாவது மதிப்பின் மதிப்பு பூஜ்யமாக இல்லவில்லையா என்றும், இரண்டாவது மதிப்பின் மதிப்பு முதல் மதிப்புக்கு சமமாக இருக்கிறதா என்றும் சரிபார்க்கவும்
    3. உண்மை என்றால், இரண்டாவது மதிப்பு மற்றும் முதல் மதிப்பு அச்சிடுக.
    4. வேறு முதல் மதிப்பு மற்றும் இரண்டாவது மதிப்பு ஆகியவற்றை ஹாஷ்மாப்பில் வைக்கவும்.
  3. லூப் இருக்கும் வரை செயல்முறையை ஒரு முதல் டி வரை செய்யவும்.

விளக்கம்

நாங்கள் ஒரு வரிசை ஜோடிகளை வழங்கியுள்ளோம், அந்த வரிசையில் சில சமச்சீர் ஜோடிகள் உள்ளன. ஒரு வரிசையில் இருக்கும் அனைத்து சமச்சீர் ஜோடிகளையும் நாம் கண்டுபிடிக்க வேண்டும் என்று சிக்கல் அறிக்கை கூறுகிறது. நாம் வெறுமனே இரண்டு சுழல்களைப் பயன்படுத்தலாம் மற்றும் இரண்டு வரிசைகளையும் ஒவ்வொன்றாகப் பயணிக்கலாம். ஆனால் இது எங்களுக்கு அதிக நேர சிக்கலை செலவழிக்கிறது, மேலும் எங்களிடம் திறமையான குறியீடு இருக்க முடியாது. ஒரு குறிப்பிட்ட வரிசையில் முதலில் அவற்றை வரிசைப்படுத்த சிறந்த அணுகுமுறையைப் பயன்படுத்த முயற்சிக்கிறோம், ஆனால் அது எங்கள் செயல்திறனையும் எடுக்கும். எனவே ஒரு திறமையான நிரலைப் பெற நாம் ஹாஷிங்கைப் பயன்படுத்த வேண்டும்.

ஹாஷ்மாப்பைப் பயன்படுத்துவதன் மூலம், முதலில் ஜோடியின் முதல் உறுப்பை சேமிக்கிறோம் முதல் மதிப்பு மற்றும் ஜோடியின் இரண்டாவது உறுப்பு இரண்டாவது மதிப்பு, ஒரு ஜோடியின் இரண்டு கூறுகளையும் ஒரு விசையாகவும் மதிப்பாகவும் பயன்படுத்தலாம். ஒரு ஜோடியின் விசையை மற்றொரு ஜோடியின் மதிப்பையும் அதே ஜோடியின் மதிப்பையும் மற்றொரு ஜோடியின் விசையுடன் ஒப்பிட்டு வரைபடத்தில் தேடுவோம்.

நாங்கள் ஒரு ஹாஷ்மாப்பைப் பயன்படுத்தப் போகிறோம், ஜோடிகளின் வரிசையை வழங்குவதற்கான ஒரு எடுத்துக்காட்டைக் கருத்தில் கொள்வோம், அதில் அனைத்து சமச்சீர் ஜோடிகளையும் கண்டுபிடி

உதாரணமாக

arr={{1, 2},{30,40},{6,9},{2,1},{9,6}}

வரிசையின் ஜோடி மதிப்பை முதல் மதிப்பு மற்றும் இரண்டாவது மதிப்பு ஆகியவற்றில் சேமித்து வைப்போம், பின்னர் அதைச் சரிபார்க்கிறோம்.

i = 0,

firstValue = arr [i] [0] // ஜோடி 1 வது உறுப்பு

secondValue = arr [i] [1] // ஜோடி 2 வது உறுப்பு

firstValue = 1, secondValue = 2

ஒரு வரைபடத்தில் ஒரு மதிப்பு இருந்தால் அது 1 ஐ சரிபார்க்கிறோம் மற்றும் நிபந்தனை தவறானது, எனவே அது மதிப்பு இரண்டையும் வரைபடத்தில் வைக்கிறது.

வரைபடம் = [{1: 2}]

i = 1,

firstValue = arr [i] [0] // ஜோடி 1 வது உறுப்பு

secondValue = arr [i] [1] // ஜோடி 2 வது உறுப்பு

firstValue = 30, secondValue = 40

ஒரு வரைபடத்தில் ஒரு மதிப்பு இருந்தால் அது 30 ஐ சரிபார்க்கிறோம் மற்றும் நிபந்தனை தவறானது, எனவே அது மதிப்பு இரண்டையும் வரைபடத்தில் வைக்கிறது.

வரைபடம் = [{1: 2}, {30:40}]

i = 2,

firstValue = arr [i] [0] // ஜோடி 1 வது உறுப்பு

secondValue = arr [i] [1] // ஜோடி 2 வது உறுப்பு

firstValue = 6, secondValue = 9

ஒரு வரைபடத்தில் ஒரு மதிப்பு இருந்தால் அது 6 ஐ சரிபார்க்கிறோம் மற்றும் நிபந்தனை தவறானது, எனவே அது மதிப்பு இரண்டையும் வரைபடத்தில் வைக்கிறது.

Map=[{1:2},{30:40},{6:9}]

i = 3,

firstValue = arr [i] [0] // ஜோடி 1 வது உறுப்பு

secondValue = arr [i] [1] // ஜோடி 2 வது உறுப்பு

firstValue = 2, secondValue = 1

ஒரு வரைபடத்தில் மதிப்பு இருந்தால் 1 ஐ சரிபார்க்கிறோம், அது '2' ஆக இருக்கிறதா, பின்னர் சரிபார்க்கிறோம், இரண்டாவது மதிப்பின் உறுப்பு முதல் மதிப்புக்கு சமமாக இருந்தால், இந்த நிலையும் பூர்த்தி செய்கிறது.

எனவே அச்சிடுகிறோம் (1, 2)

Map=[{1:2},{30:40},{6:9}]

i = 4,

firstValue = arr [i] [0] // ஜோடி 1 வது உறுப்பு

secondValue = arr [i] [1] // ஜோடி 2 வது உறுப்பு

firstValue = 9, secondValue = 6

ஒரு வரைபடத்தில் மதிப்பு இருந்தால் 6 ஐ சரிபார்க்கிறோம், அது '9' ஆக இருக்கிறதா, பின்னர் இரண்டாவது மதிப்பின் உறுப்பு முதல் மதிப்புக்கு சமமாக இருக்கிறதா என்று சோதிப்போம், மேலும் இந்த நிலையும் பூர்த்தி செய்கிறது.

எனவே (1, 2), (6, 9) அச்சிடுகிறோம்

Map=[{1:2},{30:40},{6:9}]

குறியீடு

அனைத்து சமச்சீர் ஜோடிகளையும் கண்டுபிடிக்க சி ++ நிரல்

#include<unordered_map>
#include<iostream>
using namespace std;
void getSymmetricPair(int arr[][2], int row)
{
    unordered_map<int, int> myMap;

    for (int i = 0; i < row; i++)
    {
        int firstValue = arr[i][0];
        int secondValue = arr[i][1];

        if (myMap.find(secondValue) != myMap.end() && myMap[secondValue] == firstValue)
        {
            cout << "(" << secondValue << ", " << firstValue << ")"<<" ";
        }
        else
        {
            myMap[firstValue] = secondValue;
        }
    }
}
int main()
{
    int arr[5][2]= {{11,20},{30,40},{4,5},{5,4},{40,30}};
    getSymmetricPair(arr, 5);
}
(4, 5) (30, 40)

அனைத்து சமச்சீர் ஜோடிகளையும் கண்டுபிடிக்க ஜாவா நிரல்

import java.util.HashMap;
class pairSymmetrics
{
    static void getSymmetricPair(int arr[][])
    {
        HashMap<Integer, Integer> hashmap = new HashMap<Integer, Integer>();

        for (int i = 0; i < arr.length; i++)
        {
            int firstValue = arr[i][0];
            int secondValue = arr[i][1];
            Integer val = hashmap.get(secondValue);

            if (val != null && val == firstValue)
            {
                System.out.print("(" + secondValue + ", " + firstValue + ")" + " ");
            }
            else
            {
                hashmap.put(firstValue, secondValue);
            }
        }
    }

    public static void main(String arg[])
    {
        int arr[][]= {{11,20},{30,40},{4,5},{5,4},{40,30}};
        getSymmetricPair(arr);

    }
}
(4, 5) (30, 40)

சிக்கலான பகுப்பாய்வு

நேர சிக்கலானது

ஓ (n) எங்கே “N” என்பது வரிசையில் உள்ள உறுப்புகளின் எண்ணிக்கை. நாங்கள் ஒரு ஹாஷ்மேப்பைப் பயன்படுத்தியதால், செருக / நீக்குதல் / தேடலைச் செய்யலாம் ஓ (1) நேரம்.

விண்வெளி சிக்கலானது

ஓ (n) எங்கே “N” என்பது வரிசையில் உள்ள உறுப்புகளின் எண்ணிக்கை. நாங்கள் வரைபடத்தில் கூறுகளை சேமித்து வைத்திருப்பதால். விண்வெளி சிக்கலானது நேரியல்.

குறிப்புகள்