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>
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