Número máximo al concatenar cada elemento en una rotación de una array

Dada una array de N elementos. La tarea es imprimir el número máximo concatenando cada elemento en cada rotación. En cada rotación, el primer elemento ocupará el lugar del último elemento en cada rotación y viceversa.
Ejemplos: 
 

Entrada: a[]: {54, 546, 548, 60} 
Salida: 6054546548 
1.ª rotación: 5465486054 
2.ª rotación: 5486054546 
3.ª rotación: 6054546548 
4.ª rotación: 5454654860
Entrada: a[]: {1, 4, 18, 96} 
Salida : 961418

Enfoque: al observar cuidadosamente, se encuentra que el número que tiene el dígito más grande a la izquierda en todos los elementos será el primer elemento en el número. Dado que la concatenación debe realizarse en términos de rotación de arrays. Concatene todos los números desde el índice de dígitos más grande a la izquierda hasta el final y luego concatene los elementos desde el índice 0 hasta el índice de dígitos más grande a la izquierda. 
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program to print the
// Maximum number by concatenating
// every element in rotation of array
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the largest number
void printLargest(int a[], int n)
{
 
    // store the index of largest
    // left most digit of elements
    int max = -1;
    int ind = -1;
 
    // Iterate for all numbers
    for (int i = 0; i < n; i++) {
 
        int num = a[i];
 
        // check for the last digit
        while (num) {
            int r = num % 10;
            num = num / 10;
            if (num == 0) {
                // check for the largest left most digit
                if (max < r) {
                    max = r;
                    ind = i;
                }
            }
        }
    }
 
    // print the largest number
 
    // print the rotation of array
    for (int i = ind; i < n; i++)
        cout << a[i];
 
    // print the rotation of array
    for (int i = 0; i < ind; i++)
        cout << a[i];
}
 
// Driver Code
int main()
{
    int a[] = { 54, 546, 548, 60 };
    int n = sizeof(a) / sizeof(a[0]);
    printLargest(a, n);
    return 0;
}

Java

// Java program to print the
// Maximum number by concatenating
// every element in rotation of array
import java.util.*;
import java.lang.*;
 
public class GFG {
    // Function to print the largest number
    static void printLargest(int a[], int n)
    {
        // store the index of largest
        // left most digit of elements
        int max = -1;
        int ind = -1;
 
        // Iterate for all numbers
        for (int i = 0; i < n; i++) {
            int num = a[i];
 
            // check for the last digit
            while (num > 0) {
                int r = num % 10;
                num = num / 10;
                if (num == 0) {
                    // check for the largest left most digit
                    if (max < r) {
                        max = r;
                        ind = i;
                    }
                }
            }
        }
        // print the largest number
 
        // print the rotation of array
        for (int i = ind; i < n; i++)
            System.out.print(a[i]);
 
        // print the rotation of array
        for (int i = 0; i < ind; i++)
            System.out.print(a[i]);
    }
 
    // Driver Code
    public static void main(String args[])
    {
        int a[] = { 54, 546, 548, 60 };
        int n = a.length;
        printLargest(a, n);
    }
}

Python3

# Python program to print the
# Maximum number by concatenating
# every element in rotation of array
  
# Function to print the largest number
def printLargest(a, n):
 
      
    # store the index of largest
    # left most digit of elements
    max =-1
    ind =-1
      
    # Iterate for all numbers
    for i in range(0, n):
         num = a[i]
          
        # check for the last digit
         while(num):
         
            r = num % 10;
            num = num / 10;
            if(num == 0):
                # check for the largest left most digit
                if(max<r):
                    max = r
                    ind = i;
             
             
         
     
      
    # print the largest number
      
    # print the rotation of array
    for i in range(ind, n):
        print(a[i], end =''),
      
    # print the rotation of array
    for i in range(0, ind) :
        print(a[i], end ='')
 
# Driver Code
if __name__ == "__main__":
    a = [54, 546, 548, 60]
    n = len(a)
    printLargest(a, n)
 
 
# This code is contributed by Shivi_Aggarwal

C#

// C# program to print the
// Maximum number by concatenating
// every element in rotation of array
using System;
 
class GFG {
 
    // Function to print the largest number
    static void printLargest(int[] a, int n)
    {
        // store the index of largest
        // left most digit of elements
        int max = -1;
        int ind = -1;
 
        // Iterate for all numbers
        for (int i = 0; i < n; i++) {
            int num = a[i];
 
            // check for the last digit
            while (num > 0) {
                int r = num % 10;
                num = num / 10;
                if (num == 0) {
                    // check for the largest left most digit
                    if (max < r) {
                        max = r;
                        ind = i;
                    }
                }
            }
        }
        // print the largest number
 
        // print the rotation of array
        for (int i = ind; i < n; i++)
            Console.Write(a[i]);
 
        // print the rotation of array
        for (int i = 0; i < ind; i++)
            Console.Write(a[i]);
    }
 
    // Driver Code
    public static void Main()
    {
        int[] a = { 54, 546, 548, 60 };
        int n = 4;
        printLargest(a, n);
    }
}
 
// This code is contributed by mohit kumar 29

PHP

<?php
// PHP program to print
// the Maximum number by
// concatenating every
// element in rotation of array
 
// Function to print
// the largest number
function printLargest($a, $n)
{
     
    // store the index of largest
    // left most digit of elements
    $max = -1;
    $ind = -1;
     
    // Iterate for
    // all numbers
    for($i = 0 ; $i < $n; $i++)
    {
         
        $num = $a[$i];
         
        // check for the
        // the last digit
        while($num)
        {
            $r = $num % 10;
            $num = (int)$num / 10;
            if($num == 0)
            {
                // check for the largest
                // left most digit
                if($max < $r)
                {
                    $max = $r;
                    $ind = $i;
                }
            }
        }
    }
     
    // print the largest number
     
    // print the
    // rotation of array
    for($i = $ind; $i < $n; $i++)
    echo $a[$i];
     
    // print the
    // rotation of array
    for($i = 0; $i < $ind; $i++)
    echo $a[$i];
}
 
// Driver Code
$a = array (54, 546,
            548, 60);
$n = sizeof($a);
printLargest($a, $n);
     
// This code is contributed by m_kit
?>

Javascript

<script>
 
// Javascript program to print the
// Maximum number by concatenating
// every element in rotation of array
 
    // Function to print the largest number
    function printLargest(a, n)
    {
        // store the index of largest
        // left most digit of elements
        let max = -1;
        let ind = -1;
   
        // Iterate for all numbers
        for (let i = 0; i < n; i++) {
            let num = a[i];
   
            // check for the last digit
            while (num > 0) {
                let r = num % 10;
                num = Math.floor(num / 10);
                if (num == 0) {
                    // check for the largest
                    // left most digit
                    if (max < r) {
                        max = r;
                        ind = i;
                    }
                }
            }
        }
        // print the largest number
   
        // print the rotation of array
        for (let i = ind; i < n; i++)
            document.write(a[i]);
   
        // print the rotation of array
        for (let i = 0; i < ind; i++)
            document.write(a[i]);
    }
 
// driver code
 
     let a = [ 54, 546, 548, 60 ];
        let n = a.length;
        printLargest(a, n);
   
</script>
Producción: 

6054546548

 

Complejidad de tiempo: O(n * log 10 (num)), donde n es el tamaño de la array y num es el número de dígitos del elemento máximo de la array.

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por sjchatterjee_73 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 *