Dado un entero K y una array arr[] de N enteros que contiene los identificadores de las aplicaciones abiertas en un sistema donde
- arr[0] es la aplicación actualmente en uso
- arr[1] es la aplicación que se usó más recientemente y
- arr[N – 1] es la aplicación que se usó menos recientemente.
La tarea es imprimir el contenido de la array cuando el usuario que usa el sistema presiona Alt + Tab exactamente K veces. Tenga en cuenta que después de presionar la tecla Alt + Tabulador , el puntero de apertura de la aplicación se moverá a través de las aplicaciones desde el índice 0 hacia la derecha, según la cantidad de pulsaciones, por lo que la aplicación en la que finaliza la pulsación cambiará al índice 0, porque se convertirá en la más reciente. aplicación abierta.
Ejemplos:
Entrada: arr[] = {3, 5, 2, 4, 1}, K = 3
Salida: 4 3 5 2 1
El usuario quiere cambiar a la aplicación con id 4, se convertirá en la aplicación actualmente activa y la anterior la aplicación activa (con ID 3) será la aplicación utilizada más recientemente.
Entrada: arr[] = {5, 7, 2, 3, 4, 1, 6}, K = 10
Salida: 3 5 7 2 4 1 6
Enfoque: obtenga el índice de la aplicación a la que el usuario desea cambiar, es decir , appIndex = K % N . Ahora, la aplicación activa actual será arr[appIndex] y todas las demás aplicaciones en el rango de índice [0, appIndex – 1] deberán desplazarse 1 elemento hacia la derecha.
A continuación se muestra la implementación del enfoque anterior:
C++14
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to update the array // in most recently used fashion void mostRecentlyUsedApps(int* arr, int N, int K) { int app_index = 0; // Finding the end index after K presses app_index = (K % N); // Shifting elements by 1 towards the found index // on which the K press ends int x = app_index, app_id = arr[app_index]; while (x > 0) { arr[x] = arr[--x]; } // Update the current active app arr[0] = app_id; } // Utility function to print // the contents of the array void printArray(int* arr, int N) { for (int i = 0; i < N; i++) cout << arr[i] << " "; } // Driver code int main() { int K = 3; int arr[] = { 3, 5, 2, 4, 1 }; int N = sizeof(arr) / sizeof(arr[0]); mostRecentlyUsedApps(arr, N, K); printArray(arr, N); return 0; }
C#
// C# implementation of the approach using System; class GFG { // Function to update the array // in most recently used fashion static void mostRecentlyUsedApps(int []arr, int N, int K) { int app_index = 0; // Finding the end index after K presses app_index = (K % N); // Shifting elements by 1 towards the found index // on which the K press ends int x = app_index, app_id = arr[app_index]; while (x > 0) { arr[x] = arr[--x]; } // Update the current active app arr[0] = app_id; } // Utility function to print // the contents of the array static void printArray(int []arr, int N) { for (int i = 0; i < N; i++) Console.Write(arr[i]+" "); } // Driver code static void Main() { int K = 3; int []arr = { 3, 5, 2, 4, 1 }; int N = arr.Length; mostRecentlyUsedApps(arr, N, K); printArray(arr, N); } } // This code is contributed by mits
Javascript
<script> // Javascript implementation of the approach // Function to update the array // in most recently used fashion function mostRecentlyUsedApps(arr, N, K) { let app_index = 0; // Finding the end index after K presses app_index = (K % N); // Shifting elements by 1 towards the found index // on which the K press ends let x = app_index, app_id = arr[app_index]; while (x > 0) { arr[x] = arr[--x]; } // Update the current active app arr[0] = app_id; } // Utility function to print // the contents of the array function printArray(arr, N) { for (let i = 0; i < N; i++) document.write(arr[i] + " "); } // Driver code let K = 3; let arr = [3, 5, 2, 4, 1]; let N = arr.length; mostRecentlyUsedApps(arr, N, K); printArray(arr, N); // This code is contributed by gfgking. </script>
Java
/*package whatever //do not write package name here */ import java.io.*; class GFG { public static void main(String[] args) { int[] num = { 3, 5, 2, 4, 1 }; int size = num.length; // 8,6,7,9,0,2,1,12,89 int d = 3; int appIndex = d % size; int appId = num[appIndex]; for (int i = appIndex; i > 0; i--) { num[i] = num[i - 1]; } num[0] = appId; for (int i = 0; i < num.length; i++) { System.out.print(" " + num[i]); } } }
4 3 5 2 1
Complejidad de tiempo: O(N)
Publicación traducida automáticamente
Artículo escrito por Dhirendra121 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA