Replace array elements in given range from another array elements

By | September 28, 2023

Given an array A[] and size of array is N. The task is to replace element of array A[] are in given range L to R both are included. Element replace by one another Array B[] size of N.

Examples:

Input : N = 8
        A[] = { 3, 5, 3, 4, 9, 3, 1, 6 }
        B[] = { 5, 2, 7, 0, 1, 6, 4, 10 }
        L = 2
        R = 7
Output : 3 5 7 0 1 6 4 10
Since A[2] = 3 but this is replace by B[2] = 7
A[3] = 4 replace by B[3] = 0, A[4] = 9 replace by B[4] = 1,
A[5] = 3 replace by B[5] = 6,A[6] = 1 replace by B[6] = 4  
A[7] =  6 replace by B[7] = 10 

Input : N = 10
        A[] ={ 5, 8, 11, 15, 26, 14, 19, 17, 10, 14 }
        B[] = { 8, 6, 9, 2, 4, 6, 41, 32, 45, 78}
        L = 4
        R = 6
Output :5 8 11 15 4 6 41 17 10 14

Naive Approach:

A naive approach is to replace element in range L to R with extra space. Below is the implementation of the above approach.

Implementation in C++:

// C++ code to replace elements in a given range
#include <bits/stdc++.h>
using namespace std;

// Replace elements from L to R in A with elements from B
vector<int> replaceElements(int A[], int B[], int L, int R, int N) {
    vector<int> C;
    
    for (int i = 0; i < L; i++)
        C.push_back(A[i]);
    
    for (int i = L; i <= R; i++)
        C.push_back(B[i]);
    
    for (int i = R + 1; i < N; i++)
        C.push_back(A[i]);
    
    return C;
}

// Main Driver
int main() {
    int A[] = {5, 8, 11, 15, 26, 14, 19, 17, 10, 14};
    int B[] = {8, 6, 9, 2, 4, 6, 41, 32, 45, 78};
    int L = 4, R = 6;
    int N = sizeof(A) / sizeof(A[0]);
    vector<int> res = replaceElements(A, B, L, R, N);
    
    for (auto x : res)
        cout << x << " ";
    
    return 0;
}

Output :

5 8 11 15 4 6 41 17 10 14

Time Complexity : O(n)
Auxiliary Space : O(n)

Efficient Approach :

An efficient solution without using extra space. Below is the implementation of the above approach.

Implementation in C++:

// C++ code to replace elements in a given range
#include <bits/stdc++.h>
using namespace std;

int A[] = {5, 8, 11, 15, 26, 14, 19, 17, 10, 14};

// Replace elements from L to R in A with elements from B
void replaceElement(int B[], int L, int R, int N) {
    int j = 0;
    for (int i = L; i <= R; i++) {
        A[i] = B[j];
        j++;
    }
}

// Print array
void printArray(int N) {
    for (int i = 0; i < N; i++)
        cout << A[i] << " ";
    cout << endl;
}

// main Driver
int main() {
    int B[] = {8, 6, 9, 2, 4, 6, 41, 32, 45, 78};
    int L = 4, R = 6;
    int N = sizeof(A) / sizeof(A[0]);
    replaceElement(B, L, R, N);
    printArray(N);
    return 0;
}
5 8 11 15 4 6 41 17 10 14

Time Complexity: O(n)
Auxiliary Space : O(1)

Author: Mithlesh Upadhyay

I hold an M.Tech degree in Artificial Intelligence (2023) from Delhi Technological University (DTU) and possess over 4 years of experience. I worked at GeeksforGeeks, leading teams and managing content, including GATE CS, Test Series, Placements, C, and C++. I've also contributed technical content to companies like MarsDev, Tutorialspoint, StudyTonight, TutorialCup, and Guru99. My skill set includes coding, Data Structures and Algorithms (DSA), and Object-Oriented Programming (OOPs). I'm proficient in C++, Python, JavaScript, HTML, CSS, Bootstrap, React.js, Node.js, MongoDB, Django, and Data Science.