பல வரிசை வரம்பு அதிகரிக்கும் செயல்பாடுகளுக்குப் பிறகு மாற்றியமைக்கப்பட்ட வரிசையை அச்சிடுக


சிரமம் நிலை கடின
அடிக்கடி கேட்கப்படுகிறது Expedia ஃப்ரீசார்ஜ் கூகிள் உண்மையில் மூன்ஃப்ராக் ஆய்வகங்கள் ஓலா கேப்ஸ் Qualtrics
அணி வினவல் சிக்கல்

“பல வரிசை வரம்பு அதிகரிக்கும் நடவடிக்கைகளுக்குப் பிறகு மாற்றியமைக்கப்பட்ட வரிசையை அச்சிடு” என்ற சிக்கல் உங்களுக்கு வழங்கப்பட்டுள்ளது என்று கூறுகிறது முழு வரிசை மற்றும் 'q' வினவல்கள் வழங்கப்படுகின்றன. ஒரு முழு எண் மதிப்பு “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) arr {2, 7, 3, 4, 7, 9 be

இப்போது குறியீட்டு (3,5) arr இலிருந்து அதிகரிப்பு {2, 7, 3, 6, 9, 11 become ஆக மாறும்

குறியீட்டிலிருந்து மீண்டும் அதிகரிப்பு (4,5) arr {2, 7, 3, 6, 11, 13 be

இப்போது குறியீட்டு (2,4) arr இலிருந்து அதிகரிப்பு {2, 7, 5, 8, 13, 13 become ஆக மாறும்

குறியீட்டிலிருந்து மீண்டும் அதிகரிப்பு (1,3) arr {2, 9, 7, 10, 13, 13 be

 

பல வரிசை வரம்பு அதிகரிக்கும் செயல்பாடுகளுக்குப் பிறகு மாற்றியமைக்கப்பட்ட வரிசையை அச்சிடுக

பல வரிசை வரம்பு அதிகரிக்கும் செயல்பாடுகளுக்கான வழிமுறை

  1. கொடுக்கப்பட்ட வரிசைக்கு சமமான ஒரு வரிசையை அறிவிக்கவும்.
  2. வரிசையை 0 முதல் மொத்த வினவல்களின் எண்ணிக்கையில் பயணிக்கவும்.
  3. கொடுக்கப்பட்ட வரம்பில் நாம் உருவாக்கிய வரிசையில் கொடுக்கப்பட்ட மதிப்பைச் சேர்க்கவும். கொடுக்கப்பட்ட வினவலின் இறுதி வரம்பு வரிசையின் நீளத்தை விட குறைவாக இருக்கிறதா என்று சோதிக்கவும். உண்மை என்றால், நாங்கள் உருவாக்கிய வரிசையில் இருந்து “d” மதிப்பைக் குறைக்கவும்.
  4. கொடுக்கப்பட்ட வரிசையை கடந்து, தற்போதைய மற்றும் முந்தைய மதிப்புகள் மற்றும் கொடுக்கப்பட்ட வரிசையைச் சேர்த்து வெளியீட்டு வரிசையைப் புதுப்பிக்கவும்.
  5. புதுப்பிக்கப்பட்ட வரிசையை அச்சிடுக.

விளக்கம்

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

இப்போது வினவல்களின் எண்ணிக்கை வரை ஒரு சுழற்சியை இயக்குகிறோம். கொடுக்கப்பட்ட மதிப்பைச் சேர்த்து வெளியீட்டு வரிசையை புதுப்பிப்போம் 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

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

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

 O (q + n) எங்கே “N” என்பது வரிசையில் உள்ள உறுப்புகளின் எண்ணிக்கை மற்றும் “q” என்பது வினவல்களின் எண்ணிக்கை. முன்னொட்டு தொகை போன்ற அணுகுமுறையை நாங்கள் பயன்படுத்தியுள்ளதால், எங்களுக்கு நேரியல் நேர சிக்கலானது.

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

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