Left Rotate by d

 1. By d*o(n) time complexity


// Online C++ compiler to run C++ program online

#include <iostream>

#include <climits>

using namespace std;


int remove_duplicate(int* arr, int n){

    int res=0;

    int i=0;

    

    while(i<=n){

        

        if(arr[i]!=0){

            

            arr[res]=arr[i];

            res++;

        }

        i++;

    }

    for(int i=res;i<n;i++){

        arr[i]=0;

    }

    for(int i=0;i<n;i++){

        cout<<arr[i]<<" ";

    }

    cout<<endl;

    return n;

    

    

}


void left(int*arr,int n){

    int temp=arr[0];

    for (int i=0;i<n-1;i++){

        arr[i]=arr[i+1];

    }

    arr[n-1]=temp;

    for(int i=0;i<n;i++){

        cout<<arr[i]<<" ";

    }

    cout<<endl;

    

}


void left_d(int *arr, int n, int d){

    while (d>1){

        left(arr,n);

        d--;

    }

}


int main() {

    int arr[50]={10,0,20,0,30,0,50};

    int n=7;

    int d=3;

    left_d(arr,n,d);


    return 0;

}


2. By taking o(n) extra space

// Online C++ compiler to run C++ program online

#include <iostream>

#include <climits>

using namespace std;


int remove_duplicate(int* arr, int n){

    int res=0;

    int i=0;

    

    while(i<=n){

        

        if(arr[i]!=0){

            

            arr[res]=arr[i];

            res++;

        }

        i++;

    }

    for(int i=res;i<n;i++){

        arr[i]=0;

    }

    for(int i=0;i<n;i++){

        cout<<arr[i]<<" ";

    }

    cout<<endl;

    return n;

    

    

}


void left(int*arr,int n){

    int temp=arr[0];

    for (int i=0;i<n-1;i++){

        arr[i]=arr[i+1];

    }

    arr[n-1]=temp;

    for(int i=0;i<n;i++){

        cout<<arr[i]<<" ";

    }

    cout<<endl;

    

}


void left_d(int *arr, int n, int d){

    int arr2[n];

    for(int i=0;i<n;i++){

        arr2[i]=arr[i];

    }

    for(int i=0;i<d;i++){

        arr[n-d+i]=arr2[i];

    }

    for(int i=d;i<n;i++){

        arr[i-d]=arr2[i];

    }

    for(int i=0;i<n;i++){

        cout<<arr[i]<<" ";

    }

    cout<<endl;

    

}


int main() {

    int arr[50]={10,0,20,0,30,0,50};

    int n=7;

    int d=3;

    left_d(arr,n,d);


    return 0;

}

3. o(n) time complexity and o(1) space:

3 time rev algo


// Online C++ compiler to run C++ program online

#include <iostream>

#include <climits>

using namespace std;


int remove_duplicate(int* arr, int n){

    int res=0;

    int i=0;

    

    while(i<=n){

        

        if(arr[i]!=0){

            

            arr[res]=arr[i];

            res++;

        }

        i++;

    }

    for(int i=res;i<n;i++){

        arr[i]=0;

    }

    for(int i=0;i<n;i++){

        cout<<arr[i]<<" ";

    }

    cout<<endl;

    return n;

    

    

}


void left(int*arr,int n){

    int temp=arr[0];

    for (int i=0;i<n-1;i++){

        arr[i]=arr[i+1];

    }

    arr[n-1]=temp;

    for(int i=0;i<n;i++){

        cout<<arr[i]<<" ";

    }

    cout<<endl;

    

}

void rev(int *arr, int l,  int h){

    while(l<h){

        swap(arr[l],arr[h]);

        l++;

        h--;

    }

}

void left_d(int *arr, int n, int d){

    rev(arr,0,d-1);

    rev(arr,d,n-1);

    rev(arr,0,n-1);

    for(int i=0;i<n;i++){

        cout<<arr[i]<<" ";

    }

    cout<<endl;

    

}




int main() {

    int arr[50]={10,0,20,0,30,0,50};

    int n=7;

    int d=3;

    left_d(arr,n,d);


    return 0;

Comments

Popular posts from this blog

Sum of Even Numbers till N

Find the Runner-Up Score!

Print All Substrings