দুটি প্রদত্ত অ্যারে থেকে সর্বোচ্চ অ্যারে একইভাবে অর্পণ চালাচ্ছে  


কাঠিন্য মাত্রা মধ্যম
প্রায়শই জিজ্ঞাসা করা হয় Accenture মর্দানী স্ত্রীলোক Delhivery ফ্যাক্সেট ফোরকিটস ওয় রুমগুলি পাবলিকিস সেপিয়েন্ট Zoho
বিন্যাস কাটা

ধরুন আমাদের দুটি পূর্ণসংখ্যা রয়েছে have বিন্যাস একই আকারের n। উভয় অ্যারেতে সাধারণ সংখ্যাও থাকতে পারে। সমস্যা বিবৃতিটি উভয় অ্যারে থেকে 'এন' সর্বাধিক মান ধারণকারী ফলাফল অ্যারে গঠন করতে বলে। প্রথম অ্যারেটিকে অগ্রাধিকার দেওয়া উচিত (প্রথম অ্যারের উপাদানগুলি আউটপুটে প্রদর্শিত হবে)। আউটপুট অ্যারে প্রদত্ত উভয় অ্যারে থেকে সর্বাধিক উপাদান হতে পারে তবে সাধারণ উপাদানগুলি একবার এসে প্রথমে অ্যারেটিকে অগ্রাধিকার দিতে হবে।

উদাহরণ  

ইনপুট:

int ar1 [] = {3,7,9,1,4}

int ar2 [] = {2,8,6,5,3}

আউটপুট:

{7, 9, 8, 6, 5}

ব্যাখ্যা:

হিসাবে 7, 9 প্রথম অ্যারে উপাদান, যাতে এটি আউটপুট প্রথম আসে।

ইনপুট:

int ar1 [] = {9,3,2}

int ar2 [] = {6,4,1}

আউটপুট:

{9, 6, 4}

অর্ডার একই রাখার জন্য দুটি প্রদত্ত অ্যারে থেকে সর্বোচ্চ অ্যারের জন্য অ্যালগরিদম  

  1. উভয় অ্যারেতে রূপান্তর করুন ভেক্টর.
  2. উভয় ভেক্টরকে একটি আরোহী ক্রম অনুসারে বাছাই করুন।
  3. উভয় ভেক্টরকে একই সাথে অতিক্রম করুন এবং উপাদানের ফ্রিকোয়েন্সি সহ মানচিত্রের উভয় ভেক্টরের বড় মানগুলি 'n' টিপুন।
  4. একটি নতুন ভেক্টর "আউটপুট" তৈরি করুন।
  5. একটিতে সাধারণ উপাদান রয়েছে কিনা তা পরীক্ষা করে দেখুন মানচিত্র এবং প্রথমে একটি অ্যারেতে, তারপরে, আউটপুট ভেক্টরটিতে সেই উপাদানটি যুক্ত করুন।
  6. যদি কোনও মানচিত্রে এবং অ্যারে দ্বিতীয় স্থানেও কোনও সাধারণ উপাদান থাকে তা পরীক্ষা করুন, তারপরে, যাদের ফ্রিকোয়েন্সি 1 তাদের বেছে নিন এবং তাদের আউটপুট ভেক্টরে যুক্ত করুন।
  7. ফলাফল ভেক্টর "আউটপুট" মুদ্রণ করুন।
আরো দেখুন
সর্বনিম্ন বন্ধনী রিভার্সাল

ব্যাখ্যা  

উভয় অ্যারেগুলিকে ভেক্টরে রূপান্তর করা এবং ক্রমহ্রাসমান ক্রমে সাজান। এটির সাহায্যে আমরা উভয় অ্যারের মান ভেক্টরটিতে পেতে পারি এবং ভেক্টর উভয় ক্ষেত্রেই একটি ক্রমের মধ্যে আমরা প্রথমে বড় সংখ্যা পাই। সুতরাং, আমরা 'এন' বেছে নিতে পারি সর্বোচ্চ সংখ্যা উভয় অ্যারে থেকে

আমরা যা করতে চলেছি সাধারণ উপাদানগুলির কেস পরিচালনা করার জন্য হ'ল একই সাথে ভেক্টরগুলির সাথে তুলনা করা এবং উভয় অ্যারে থেকে সর্বাধিক বাছাই করা এবং তাদের ফ্রিকোয়েন্সি সহ মানচিত্রে এটিকে রাখা, এটির সাহায্যে আমরা যদি নজর রাখতে পারি তবে সাধারণ উপাদান হোন, আমরা মানচিত্রে n সর্বাধিক উপাদানগুলিকে চাপ দিচ্ছি, যদি আমরা একটি উপাদানকে একাধিকবার খুঁজে পাই তবে আমরা কেবল তাদের ফ্রিকোয়েন্সি বাড়িয়ে চলেছি এবং তারা মানচিত্রে কোনও অতিরিক্ত উপাদান হিসাবে গণ্য হবে না, তারা হবে ফ্রিকোয়েন্সি 2, 3 বা ততোধিক হিসাবে চিহ্নিত হয়েছে .. সুতরাং পরের ট্র্যাভারসালগুলিতে আমরা এটিকে উপেক্ষা করতে পারি এবং প্রথম অ্যারেটিকে অগ্রাধিকার দিতে পারি।

আমরা অ্যারে এবং মানচিত্র উভয়কেই অনুসরণ করতে যাচ্ছি। প্রথমত, আমাদের মানচিত্রটি দিয়ে প্রথম অ্যারেটি অতিক্রম করতে হবে, যদি কোনও মানচিত্রের পাশাপাশি কোনও অ্যারেতে পাওয়া যায় এমন সাধারণ উপাদানগুলির কোনও একটি, আমাদের এটিকে আউটপুট ভেক্টরটিতে ধাক্কা দিতে হবে, যা আমরা ফলস্বরূপ তৈরি করেছি। তারপরে আমরা দ্বিতীয় অ্যারেটি অতিক্রম করব যেহেতু সাধারণ উপাদানটি ফলাফলের মধ্যেও সংরক্ষণ করা যেতে পারে, সুতরাং এখানে দ্বিতীয় অ্যারে এবং একটি মানচিত্রের সাধারণ মান সহ আমরা ম্যাপটিতে সেই উপাদানটির 1 এর ফ্রিকোয়েন্সি আছে কিনা তা যাচাই করতে যাচ্ছি , তবে কেবলমাত্র আমরা এটিকে ফলাফল ভেক্টরের দিকে ঠেলে যাব। এবং অবশেষে, সেই ভেক্টরটি মুদ্রণ করুন।

আরো দেখুন
একটি অ্যারেতে সর্বাধিক ধারাবাহিক নম্বর উপস্থিত

বাস্তবায়ন  

দুটি প্রদত্ত অ্যারে থেকে অর্ডার একই রাখার থেকে সর্বোচ্চ অ্যারের জন্য সি ++ প্রোগ্রাম

#include<iostream>
#include<unordered_map>
#include<vector>
#include<algorithm>

using namespace std;

void makeGreaterFirstArray(int A[], int B[], int n)
{
    vector<int> V1(A, A+n);
    vector<int> V2(B, B+n);
    sort(V1.begin(), V1.end(), greater<int>());
    sort(V2.begin(), V2.end(), greater<int>());

    unordered_map<int, int> MAP;
    int i = 0, j = 0;
    while (MAP.size() < n)
    {
        if (V1[i] >= V2[j])
        {
            MAP[V1[i]]++;
            i++;
        }
        else
        {
            MAP[V2[j]]++;
            j++;
        }
    }
    vector<int> output;
    for (int i = 0; i < n; i++)
        if (MAP.find(A[i]) != MAP.end())
            output.push_back(A[i]);

    for (int i = 0; i < n; i++)
        if (MAP.find(B[i]) != MAP.end() && MAP[B[i]] == 1)
            output.push_back(B[i]);

    for (int i = 0; i < n; i++)
        cout << output[i] << " ";
}
int main()
{
    int arr1[] = {3,7,9,1,4};
    int arr2[] = {2,8,6,5,3};
    int n = sizeof(arr1) / sizeof(arr1[0]);
    makeGreaterFirstArray(arr1, arr2, n);
    return 0;
}
7 9 8 6 5

দুটি প্রদত্ত অ্যারে থেকে অর্ডার একই রাখার থেকে সর্বোচ্চ অ্যারের জন্য জাভা প্রোগ্রাম

import java.util.Collections;
import java.util.Vector;
import java.util.HashMap;
import java.util.Arrays;
import java.util.stream.Collectors;

class findsubarray
{
    public static void makeGreaterFirstArray(int []A, int []B, int n)
    {
        Vector<Integer> V1 = new Vector<>();
        Vector<Integer> V2 = new Vector<>();

        Integer[] I1 = Arrays.stream( A ).boxed().toArray( Integer[]::new );
        Integer[] I2 = Arrays.stream( B ).boxed().toArray( Integer[]::new );


        Collections.addAll(V1, I1);
        Collections.addAll(V2, I2);

        Collections.sort(V1, Collections.reverseOrder());
        Collections.sort(V2, Collections.reverseOrder());


        HashMap<Integer, Integer> MAP = new HashMap<Integer, Integer>();

        int i = 0, j = 0;
        while (MAP.size() < n)
        {
            if (V1.get(i) >= V2.get(j))
            {
                if(MAP.containsKey(V1.get(i)))
                {
                    MAP.put(V1.get(i), MAP.get(V1.get(i))+1);
                    i++;
                }
                else
                {
                    MAP.put(V1.get(i),1);
                    i++;
                }
            }
            else
            {
                if(MAP.containsKey(V2.get(j)))
                {
                    MAP.put(V2.get(j), MAP.get(V2.get(j))+1);
                    j++;
                }
                else
                {
                    MAP.put(V2.get(j),1);
                    j++;
                }
            }
        }
        Vector<Integer> output = new Vector<Integer>();

        for (int a = 0; a < n; a++)
            if (MAP.containsKey(A[a]))
                output.add(A[a]);

        for (int b = 0; b < n; b++)
            if (MAP.containsKey(B[b]) && MAP.get(B[b])==1)
                output.add(B[b]);


        System.out.println(output);
    }
    public static void main(String [] args)
    {
        int arr1[] = {3,7,9,1,4};
        int arr2[] = {2,8,6,5,3};
        int n = arr1.length;
        makeGreaterFirstArray(arr1, arr2, n);
    }
}
[7, 9, 8, 6, 5]

অর্ডার একইরূপে প্রদত্ত দুটি অ্যারে থেকে সর্বোচ্চ অ্যারের জন্য জটিলতা বিশ্লেষণ  

সময় জটিলতা

ও (এন লগ এন) কোথায় "এন" অ্যারে দৈর্ঘ্য হয়।

আরো দেখুন
অ্যারেতে সর্বোচ্চ দূরত্ব

স্পেস জটিলতা ity

উপর) কোথায় "এন" অ্যারে দৈর্ঘ্য হয়।