Imprima la array formada al invertir la array dada después de cada índice

Dada una array arr[], la tarea es imprimir la array formada al atravesar la array dada desde el primero hasta el último índice volteando la array completa después de imprimir cada elemento.

Ejemplo:

Entrada: arr = {0, 1, 2, 3, 4, 5} 
Salida: 0 4 2 2 4 0
Explicación: En la primera iteración, se imprime el elemento en el índice 0 -> 0 y luego se voltea toda la array: { 0 , 1 , 2, 3, 4, 5} {5, 4, 3, 2, 1, 0} 
                      En la segunda iteración, se imprime el elemento en el índice 1 -> 4 y luego se voltea toda la array: {5, 4 , 3, 2 , 1, 0} {0, 1, 2, 3, 4, 5} 
                      En la tercera iteración, se imprime el elemento en el índice 2 -> 2 y luego se voltea toda la array: {0, 1, 2 , 3, 4, 5} {5, 4, 3, 2, 1, 0} 
                      En la segunda iteración, se imprime el elemento en el índice 3 -> 2 y luego se voltea toda la array: {5, 4, 3, 2 , 1, 0} {0, 1 , 2, 3, 4, 5} 
                      En el elemento de la segunda iteración en el índice 4 -> 4 se imprime, luego se voltea la array completa: {0, 1, 2, 3, 4 , 5} {5, 4, 3, 2, 1, 0} 
                      En el elemento de la segunda iteración en se imprime el índice 5 -> 0 y luego se voltea toda la array: {5, 4, 3, 2, 1, 0 } {0, 1, 2, 3, 4, 5} 

Entrada: arr = {0, 1, 2, 3, 4}
Salida: 0 3 2 1 4

 

Enfoque: El problema dado se puede resolver utilizando la técnica de dos puntos . La idea es iterar la array de izquierda a derecha a partir del primer índice y de derecha a izquierda a partir del penúltimo índice. 

Se pueden seguir los siguientes pasos para resolver el problema:

  • Use el puntero uno para iterar la array de izquierda a derecha y use el puntero dos para recorrer la array de derecha a izquierda
  • Imprima los elementos apuntados por ambos punteros simultáneamente e incremente el puntero uno por 2 y disminuya el puntero dos por 2

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ code for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print array elements at
// every index by flipping whole array
// after printing every element
void printFlip(vector<int> arr)
{
 
    // Initialize length of the array
    int N = arr.size();
 
    // Initialize both the pointers
    int p1 = 0, p2 = N - 2;
 
    // Iterate until both pointers
    // are not out of bounds
    while (p1 < N || p2 >= 0) {
 
        // Print the elements
        cout << arr[p1] << " ";
        if (p2 > 0)
            cout << arr[p2] << " ";
 
        // Increment p1 by 2
        p1 += 2;
 
        // Decrement p2 by 2
        p2 -= 2;
    }
}
 
// Driver code
int main()
{
 
    // Initialize the array
    vector<int> arr = { 0, 1, 2, 3, 4 };
 
    // Call the function
    // and print the array
    printFlip(arr);
    return 0;
}
 
// This code is contributed by Potta Lokesh.

Java

// Java implementation for the above approach
 
import java.io.*;
import java.util.*;
 
class GFG {
 
    // Function to print array elements at
    // every index by flipping whole array
    // after printing every element
    public static void printFlip(int[] arr)
    {
 
        // Initialize length of the array
        int N = arr.length;
 
        // Initialize both the pointers
        int p1 = 0, p2 = N - 2;
 
        // Iterate until both pointers
        // are not out of bounds
        while (p1 < N || p2 >= 0) {
 
            // Print the elements
            System.out.print(arr[p1] + " ");
            if (p2 > 0)
                System.out.print(arr[p2] + " ");
 
            // Increment p1 by 2
            p1 += 2;
 
            // Decrement p2 by 2
            p2 -= 2;
        }
    }
 
    // Driver code
    public static void main(String[] args)
    {
 
        // Initialize the array
        int[] arr = { 0, 1, 2, 3, 4 };
 
        // Call the function
        // and print the array
        printFlip(arr);
    }
}

Python3

# Python code for the above approach
 
# Function to print array elements at
# every index by flipping whole array
# after printing every element
def printFlip(arr):
 
    # Initialize length of the array
    N = len(arr);
 
    # Initialize both the pointers
    p1 = 0
    p2 = N - 2;
 
    # Iterate until both pointers
    # are not out of bounds
    while (p1 < N or p2 >= 0):
 
        # Print the elements
        print(arr[p1], end=" ");
        if (p2 > 0):
            print(arr[p2], end=" ");
 
        # Increment p1 by 2
        p1 += 2;
 
        # Decrement p2 by 2
        p2 -= 2;
     
# Driver Code
# Initialize the array
arr = [ 0, 1, 2, 3, 4 ];
 
# Call the function
# and print the array
printFlip(arr);
 
# This code is contributed by gfgking.

C#

// C# implementation for the above approach
using System;
 
class GFG {
 
    // Function to print array elements at
    // every index by flipping whole array
    // after printing every element
    static void printFlip(int []arr)
    {
 
        // Initialize length of the array
        int N = arr.Length;
 
        // Initialize both the pointers
        int p1 = 0, p2 = N - 2;
 
        // Iterate until both pointers
        // are not out of bounds
        while (p1 < N || p2 >= 0) {
 
            // Print the elements
            Console.Write(arr[p1] + " ");
            if (p2 > 0)
                Console.Write(arr[p2] + " ");
 
            // Increment p1 by 2
            p1 += 2;
 
            // Decrement p2 by 2
            p2 -= 2;
        }
    }
 
    // Driver code
    public static void Main()
    {
 
        // Initialize the array
        int []arr = { 0, 1, 2, 3, 4 };
 
        // Call the function
        // and print the array
        printFlip(arr);
    }
}
// This code is contributed by Samim Hossain Mondal.

Javascript

<script>
// Javascript code for the above approach
 
// Function to print array elements at
// every index by flipping whole array
// after printing every element
function printFlip(arr)
{
 
    // Initialize length of the array
    let N = arr.length;
 
    // Initialize both the pointers
    let p1 = 0, p2 = N - 2;
 
    // Iterate until both pointers
    // are not out of bounds
    while (p1 < N || p2 >= 0) {
 
        // Print the elements
        document.write(arr[p1] + " ");
        if (p2 > 0)
            document.write(arr[p2] + " ");
 
        // Increment p1 by 2
        p1 += 2;
 
        // Decrement p2 by 2
        p2 -= 2;
    }
}
 
// Driver Code
// Initialize the array
let arr = [ 0, 1, 2, 3, 4 ];
 
// Call the function
// and print the array
printFlip(arr);
 
// This code is contributed by Samim Hossain Mondal.
</script>
Producción

0 3 2 1 4 

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por bedisanam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *