Saltar al contenido

Encuentre el siguiente elemento de matriz distinto de cero a la derecha de cada elemento de matriz

Encuentre el siguiente elemento de matriz distinto de cero a la derecha de cada elemento de matriz

Dada una matriz arr[] de norte La tarea de los enteros es encontrar el elemento de matriz distinto de cero más cercano a la derecha de cada elemento de matriz. Si no hay ningún artículo distinto de cero, imprímalo usted mismo.

Ejemplos:

¡Atención lectores! No dejes de aprender ahora. Obtenga todos los conceptos principales de DSA con el Curso de autoaprendizaje de DSA a un precio asequible para los estudiantes y conviértase en apto para la industria. Para completar su preparación desde el aprendizaje de un idioma hasta DS Algo y mucho más, lea Toma el curso de preparación para entrevistas.

En caso de que quieras participar Clases en vivo con expertos, consulte Cursos en vivo de DSA para profesionales y Programación de competencias en vivo para estudiantes.

Entrada: arr[] = {1, 2, 0}
Producción: {2, 2, 0}
Explicación:
Para cada elemento de la matriz, los siguientes elementos distintos de cero son:
arr[0] = 1 -> 2
arr[1] = 2 -> 2 (ya que no hay ningún elemento distinto de cero)
arr[2] = 0 -> 0 (ya que no hay ningún elemento distinto de cero)

Entrada: arr[] = {1, 0, 0, 3}
Producción: {3, 3, 3, 3}

Acercarse: El enfoque simple para este problema es iterar desde el final de la matriz dada, realizar un seguimiento de la variable para cada elemento distinto de cero obtenido en la iteración y reemplazar el número entero en la matriz con esa variable. Para resolver el problema dado, siga los pasos a continuación:

  • Crea una variable, digamos tempValidpara rastrear e inicializar el entero válido -1.
  • Crea una matriz Resultado[] esto almacena el siguiente elemento de matriz distinto de cero a la derecha de cada elemento de matriz.
  • Iterar la matriz desde el final del índice N – 1 para 0 y si el valor de tempValid es -1, luego asigne el siguiente elemento distinto de cero como un número al índice actual, es decir arr[i]. De lo contrario, actualice el valor de Resultado[i] cómo tempValid.
  • Después de completar los pasos anteriores, imprima la matriz Resultado[] como resultado.

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

C ++

 

#include <bits/stdc++.h>

using namespace std;

 

void NextValidInteger(int arr[], int N)

{

 

    

    int result[N];

 

    

    

    int tempValid = -1;

 

    

    

    for (int i = N - 1; i >= 0; i--) {

 

        

        

        

        if (tempValid == -1) {

            result[i] = arr[i];

        }

        else {

            result[i] = tempValid;

        }

 

        

        

        if (arr[i] != 0) {

            tempValid = arr[i];

        }

    }

 

    

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

        cout << result[i] << " ";

    }

}

 

int main()

{

    int arr[] = { 1, 2, 0, 2, 4, 5, 0 };

    int N = sizeof(arr) / sizeof(arr[0]);

    NextValidInteger(arr, N);

 

    return 0;

}

Complejidad del tiempo: A)
Sala auxiliar: O (1)

Source link