ஒரு வரிசை மற்றொரு வரிசையின் துணைக்குழு என்பதைக் கண்டறியவும்  


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது அகோலைட் GE ஹெல்த்கேர் குவால்காம்
அணி பைனரி தேடல் ஹாஷ் தேடி வரிசையாக்க

“ஒரு வரிசை மற்றொரு வரிசையின் துணைக்குழுவாக இருக்கிறதா என்பதைக் கண்டறியவும்” சிக்கல் உங்களுக்கு இரண்டு வரிசைகள் வரிசை 1 [] மற்றும் வரிசை 2 [] வழங்கப்பட்டுள்ளது என்று கூறுகிறது. கொடுக்கப்பட்ட வரிசைகள் வரிசைப்படுத்தப்படாத முறையில் உள்ளன. வரிசை 2 [] என்பது வரிசை 1 [] இன் துணைக்குழு என்பதைக் கண்டுபிடிப்பதே உங்கள் பணி.

உதாரணமாக  

ஒரு வரிசை மற்றொரு வரிசையின் துணைக்குழு என்பதைக் கண்டறியவும்முள்

arr1= [1,4,5,7,8,2]
arr2= [1,7,2,4]
arr2 [] is a subset of arr1 [].
arr1= [21,4,5,2,18,3]
arr2= [1,4,2,3]
arr2 [] is not a subset of arr1 [].

அல்காரிதம்  

  1. உள்ளமை வளையத்தைத் திறக்கவும்.
  2. I ஐ 0 ஆகவும், j க்கு 0 ஆகவும் அமைக்கவும்.
  3. போது i வரிசை 2 [] இன் நீளத்தை விட குறைவாக உள்ளது.
    1. போது j வரிசை 1 [] இன் நீளத்தை விட குறைவாக உள்ளது.
      1. Arr2 [i] arr [j] க்கு சமமாக இருந்தால், உடைக்கவும்.
  4. If j m க்கு சமம், தவறானது.
  5. உண்மைக்குத் திரும்பு.

விளக்கம்

என்பதைக் கண்டுபிடிப்பதே எங்கள் பணி வரிசை இரண்டாவது வரிசை 1 இன் துணைக்குழு. எனவே எங்கள் முக்கிய யோசனை உள்ளமை வளையத்தைப் பயன்படுத்தி ஒவ்வொரு உறுப்பையும் சரிபார்க்கவும், வரிசை 2 இன் ஒவ்வொரு உறுப்பு வரிசை 1 இல் காணப்படுகிறது, அதாவது வரிசை 2 என்பது வரிசை 1 இன் துணைக்குழு ஆகும்.

வரிசை 1 மற்றும் வரிசை 2 இல் உள்ளீடாக ஒரு எடுத்துக்காட்டை எடுத்துக்கொள்வோம்

உதாரணமாக

arr1 [] = {11, 1, 13, 21, 3, 7}; arr2 [] = {11, 3, 7, 1};

வரிசை 0 இன் 2 வது குறியீட்டிலிருந்து தொடங்கி, வரிசைகள் 0 இன் 2 வது குறியீடானது வரிசை 1 [i] இல் ஒத்த எண்ணைக் கண்டறிந்ததா என்பதைச் சரிபார்க்கப் போகிறோம், ஆம் அது 11 எனக் கண்டறிந்தது. எனவே நாம் வளையத்தை உடைத்து i ++ செய்யப் போகிறோம்.

மேலும் காண்க
மிக நீண்ட பிட்டோனிக் பின்விளைவு

வரிசை 1 இன் 2 வது குறியீட்டிலிருந்து தொடங்கி, வரிசைகள் 1 இன் 2 வது குறியீடானது வரிசை 1 [i] இல் ஒத்த எண்ணைக் கண்டறிந்ததா என்பதைச் சரிபார்க்கப் போகிறோம், ஆம் அது 3 எனக் கண்டறிந்தது. எனவே நாம் வளையத்தை உடைத்து i ++ செய்யப் போகிறோம் .

வரிசை 2 இன் 2 வது குறியீட்டிலிருந்து தொடங்கி, வரிசைகள் 2 இன் 2 வது குறியீடானது வரிசை 1 [i] இல் ஒத்த எண்ணைக் கண்டறிந்து அதை 7 எனக் கண்டறிந்ததா என்பதைச் சரிபார்க்கப் போகிறோம். எனவே நாம் வளையத்தை உடைத்து i ++ செய்யப் போகிறோம்.

வரிசை 1 [] இன் 2 வது குறியீட்டிலிருந்து தொடங்கி, வரிசைகள் 1 இன் 2 வது குறியீடானது வரிசை 1 [i] இல் ஒத்த எண்ணைக் கண்டறிந்து 1 அதைக் கண்டுபிடித்ததா என்பதைச் சரிபார்க்கப் போகிறோம். எனவே நாம் வளையத்தை உடைத்து i ++ செய்யப் போகிறோம்.

(J = = m) எனக் குறிப்பிடப்படும் நிபந்தனை என்றால், இதன் பொருள் என்னவென்றால், எந்தவொரு மறு செய்கையிலும் வரிசை 2 இன் உறுப்பு எதுவும் வரிசை 1 [] இல் காணப்படவில்லை என்றால், அதை உடைக்காமல் வளையிலிருந்து வெளியே வருகிறது என்றால் 'j 'வரிசை 1 இன் நீளத்திற்கு சமமான மதிப்புடன் [1] அதாவது வரிசை XNUMX இல் உள்ள உறுப்புகளில் ஒன்றை நாங்கள் கண்டுபிடிக்கவில்லை [], மேலும் நாம் பொய்யாகத் திரும்புகிறோம், ஏனெனில் துணைக்குழு கொடுக்கப்பட்ட தொகுப்பின் அனைத்து உறுப்புகளையும் கொண்டுள்ளது, நாங்கள் கண்டுபிடிக்கவில்லை ஒன்று.

குறியீடு  

ஒரு வரிசை மற்றொரு வரிசையின் துணைக்குழு என்பதை அறிய சி ++ குறியீடு

#include <iostream>
using namespace std;

bool isSubset(int arr1[], int arr2[], int l1, int l2)
{
    int i,j;
    for(i=0; i<l2; i++)
    {

        for(j=0; j<l1; j++)
        {
            if(arr2[i]==arr1[j])
                break;
        }
        if(j==l1)
            return false;
    }
    return true;
}
int main()
{
    int arr1[] = {1, 2, 3, 4, 5, 6};
    int arr2[] = {1, 3, 5};

    int l1=sizeof(arr1)/sizeof(arr1[0]);
    int l2=sizeof(arr2)/sizeof(arr2[0]);
    if(isSubset(arr1,arr2,l1,l2))
    {
        cout<<"arr2[] is a subset of arr1[]";
    }
    else
    {
        cout <<"arr2[] is not a subset of arr1[]"<<endl;
    }
    return 0;
}
arr2[] is a subset of arr1[]

ஒரு வரிசை மற்றொரு வரிசையின் துணைக்குழு என்பதை அறிய ஜாவா குறியீடு

class isArraySubset
{
    public static boolean isSubset(int arr1[],int arr2[], int l1, int l2)
    {
        int i = 0;
        int j = 0;
        for (i = 0; i < l2; i++)
        {
            for (j = 0; j < l1; j++)
            {
                if(arr2[i] == arr1[j])
                {
                    break;
                }
            }
            if (j == l1)
                return false;
        }
        return true;
    }
    public static void main(String args[])
    {
        int arr1[] = {1, 2, 3, 4, 5, 6};
        int arr2[] = {1, 3, 5};

        int l1 = arr1.length;
        int l2 = arr2.length;

        if(isSubset(arr1, arr2, l1, l2))
        {
            System.out.println("arr2[] is a subset of arr1[]");
        }
        else
        {
            System.out.println("arr2[] is not a subset of arr1[]");
        }
    }
}
arr2[] is a subset of arr1[]

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

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

ஓ (மீ * என்) எங்கே "மீ" arr1 மற்றும் “N” arr2 இன் அளவு. ஏனென்றால், நாங்கள் உள்ளமைந்த சுழல்களைப் பயன்படுத்தினோம், இது நேர சிக்கலான பல்லுறுப்புறுப்பை உருவாக்குகிறது.

மேலும் காண்க
அதிகபட்ச தொகை அதிகரிக்கும்

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

ஓ (1), ஏனெனில் நாங்கள் எந்த கூடுதல் வரிசை / திசையனையும் பயன்படுத்தவில்லை.