একাধিক অ্যারে ব্যাপ্তি বৃদ্ধি ক্রিয়াকলাপ পরে পরিবর্তিত অ্যারে মুদ্রণ  


কাঠিন্য মাত্রা কঠিন
প্রায়শই জিজ্ঞাসা করা হয় এক্সপিডিয়া ফ্রিচার্জ গুগল প্রকৃতপক্ষে মুনফ্রোগ ল্যাব ওলা ক্যাবস Qualtrics
বিন্যাস প্রশ্ন সমস্যা

সমস্যাটি "একাধিক অ্যারে রেঞ্জ ইনক্রিমেন্ট অপারেশনের পরে মুদ্রিত অ্যারে প্রিন্ট করুন" জানিয়েছে যে আপনাকে একটি দেওয়া হয়েছে পূর্ণসংখ্যা বিন্যাস এবং 'কিউ' প্রশ্নের সংখ্যা দেওয়া আছে। একটি পূর্ণসংখ্যার মান "d" দেওয়া হয়। প্রতিটি ক্যোয়ারিতে দুটি মান পূর্ণ হয়, প্রারম্ভিক মান এবং একটি সমাপ্তি মান। সমস্যা বিবরণী প্রদত্ত রেঞ্জের মধ্যে অ্যারেতে সমস্ত মান "d" দিয়ে বৃদ্ধি করতে বলেছে। পরিবর্তিত অ্যারে মুদ্রণ করুন।

উদাহরণ  

arr[] = {2, 5, 1, 4, 7, 9}
Query: (1, 2), (3, 5), (4, 5), (2, 4), (1, 3)
d = 2
2 9 7 10 13 13

ব্যাখ্যা

সূচক থেকে বর্ধনের পরে (1,2) আরআর হবে {2, 7, 3, 4, 7, 9}

এখন সূচক (3,5) আরআর থেকে ইনক্রিমেন্ট {2, 7, 3, 6, 9, 11 become হয়ে যাবে

সূচক থেকে আবার বৃদ্ধি (4,5) আরার হবে {2, 7, 3, 6, 11, 13}

এখন সূচক (2,4) আরআর থেকে ইনক্রিমেন্ট {2, 7, 5, 8, 13, 13 become হয়ে যাবে

সূচক থেকে আবার বৃদ্ধি (1,3) আরার হবে {2, 9, 7, 10, 13, 13}

 

একাধিক অ্যারে ব্যাপ্তি বৃদ্ধি ক্রিয়াকলাপ পরে পরিবর্তিত অ্যারে মুদ্রণ

একাধিক অ্যারে ব্যাপ্তি বৃদ্ধি ক্রিয়াকলাপের জন্য অ্যালগরিদম  

  1. প্রদত্ত অ্যারে হিসাবে একই আকার হিসাবে একটি অ্যারে ঘোষণা করুন।
  2. 0 টি থেকে মোট প্রশ্নের সংখ্যাগুলিতে অ্যারেটি অতিক্রম করুন।
  3. প্রদত্ত মানটিকে প্রদত্ত পরিসরে আমরা যে অ্যারে তৈরি করেছি তাতে যুক্ত করুন। প্রদত্ত ক্যোয়ারির শেষ সীমা অ্যারের দৈর্ঘ্যের চেয়ে কম কিনা তা পরীক্ষা করে দেখুন। যদি সত্য হয় তবে আমাদের তৈরি করা অ্যারে থেকে মান "d" হ্রাস করুন।
  4. প্রদত্ত অ্যারেটি অতিক্রম করুন এবং বর্তমান এবং পূর্ববর্তী মানগুলি এবং প্রদত্ত অ্যারের সংযোজন সহ আউটপুট অ্যারে আপডেট করুন।
  5. আপডেট করা অ্যারে মুদ্রণ করুন।
আরো দেখুন
মি দ্বারা বিভাজ্য অঙ্ক সহ সাবসেট

ব্যাখ্যা

দেওয়া হয়েছে একটি বিন্যাস of পূর্ণসংখ্যা এবং প্রশ্নের কয়েকটি সংখ্যা, প্রতিটি ক্যোয়ারিতে শুরু এবং শেষের সীমা এবং প্রদত্ত মান থাকে। আমাদের প্রদত্ত মানটি প্রদত্ত পরিসরের প্রারম্ভিক বিন্দু থেকে শেষের বিন্দুতে সমস্ত সংখ্যার সাথে যোগ করতে হবে। আমরা প্রশ্নের একটি অ্যারে তৈরি করা হবে। সংখ্যার দুইটি প্রশ্নের প্রতিটি অ্যারের সাথে যুক্ত হবে with আমরা প্রদত্ত অ্যারের দৈর্ঘ্যের সমান আকারের একটি অতিরিক্ত অ্যারে তৈরি করব। আমরা এই অ্যারেটিতে অপারেশনগুলি সম্পাদন করব এবং তারপরে প্রদত্ত অ্যারেগুলিতে এই অপারেশনগুলি আপডেট করব।

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

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

আরো দেখুন
সমস্ত নেতিবাচক নম্বরগুলি শুরুতে এবং ধনাত্মক অতিরিক্ত স্থান সহ শেষের দিকে ইতিবাচক দিকে নিয়ে যান

কোড  

একাধিক অ্যারে ব্যাপ্তি বৃদ্ধি ক্রিয়াকলাপের পরে পরিবর্তিত অ্যারে মুদ্রণের জন্য সি ++ কোড

#include<iostream>
#include<stdio.h>
#include<string.h>

using namespace std;

struct query
{
    int start, end;
};

void incrementByD(int arr[], struct query q_arr[],int n, int m, int d)
{
    int sum[n];
    memset(sum, 0, sizeof(sum));

    for (int i = 0; i < m; i++)
    {
        sum[q_arr[i].start] += d;

        if ((q_arr[i].end + 1) < n)
            sum[q_arr[i].end + 1] -= d;
    }
    arr[0] += sum[0];
    for (int i = 1; i < n; i++)
    {
        sum[i] += sum[i - 1];
        arr[i] += sum[i];
    }
}

void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}

int main()
{
    int arr[] = {2, 5, 1, 4, 7, 9};
    struct query q_arr[] = { { 1, 2 }, { 3, 5 },  {4,5 },
        { 2, 4 }, { 1, 3 }
    };
    int n = sizeof(arr) / sizeof(arr[0]);
    int m = sizeof(q_arr) / sizeof(q_arr[0]);

    int d = 2;

    cout << "Original Array:\n";
    printArray(arr, n);

    incrementByD(arr, q_arr, n, m, d);

    cout << "\nModified Array:\n";
    printArray(arr, n);

    return 0;
}
Original Array:
2 5 1 4 7 9
Modified Array:
2 9 7 10 13 13

একাধিক অ্যারে রেঞ্জ ইনক্রিমেন্ট অপারেশনের পরে পরিবর্তিত অ্যারে মুদ্রণের জন্য জাভা কোড

class modifiedArray
{
    static class query
    {
        int start, end;

        query(int start, int end)
        {
            this.start = start;
            this.end = end;
        }
    }

    public static void incrementByD(int[] arr, query[] q_arr, int n, int m, int d)
    {
        int[] sum = new int[n];

        for (int i = 0; i < m; i++)
        {
            sum[q_arr[i].start] += d;

            if ((q_arr[i].end + 1) < n)
                sum[q_arr[i].end + 1] -= d;
        }
        arr[0] += sum[0];
        for (int i = 1; i < n; i++)
        {
            sum[i] += sum[i - 1];
            arr[i] += sum[i];
        }
    }

    public static void printArray(int[] arr, int n)
    {
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
    }

    public static void main(String[] args)
    {
        int[] arr = { 2, 5, 1, 4, 7, 9};
        query[] q_arr = {new query(1, 2),new query(3,5),new query(4, 5),
                  new query(2, 4),new query(1, 3)
        };

        int n = arr.length;
        int m = q_arr.length;
        int d = 2;
        System.out.println("Original Array:");
        printArray(arr, n);

        incrementByD(arr, q_arr, n, m, d);
        System.out.println("\nModified Array:");
        printArray(arr, n);
    }
}
Original Array:
2 5 1 4 7 9
Modified Array:
2 9 7 10 13 13

জটিলতা বিশ্লেষণ  

সময় জটিলতা

 ও (কিউ + এন) কোথায় "এন" অ্যারেতে উপাদানগুলির সংখ্যা এবং "প্রশ্ন ” প্রশ্নের সংখ্যা হয়। যেহেতু আমরা একটি উপসর্গের মতো পদ্ধতির ব্যবহার করেছি তাই আমাদের লিনিয়ার সময় জটিলতা রয়েছে।

আরো দেখুন
মুদ্রা পরিবর্তন সমস্যা

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

 উপর) কোথায় "এন" অ্যারেতে উপাদানগুলির সংখ্যা।