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

Mithlesh Upadhyay is a Computer Science and AI expert from Madhya Pradesh with strong academic background (BE in CSE and M.Tech in AI) and over six years of experience in technical content development. He has contributed tech articles, led teams, and worked in Full Stack Development and Data Science. He founded the w3colleges.org portal for learning resources.