Dada una array de enteros, actualice cada elemento con la suma de los elementos anterior y siguiente con las siguientes excepciones.
a) El primer elemento se reemplaza por la suma del primero y el segundo.
b) El último elemento se reemplaza por la suma del último y el penúltimo.
Ejemplos:
Input : arr[] = { 2, 3, 4, 5, 6} Output : 5 6 8 10 11 Explanation: We get the following array as {2+3, 2+4, 3+5, 4+6, 5+6} Input : arr[] = { 3, 2, 1} Output : 5 4 3
Una solución simple es crear una array auxiliar, copiar el contenido de la array dada a la array auxiliar. Finalmente, recorra la array auxiliar y actualice la array dada usando los valores copiados. La complejidad temporal de esta solución es O(n), pero requiere O(n) espacio adicional.
Una solución eficiente puede resolver el problema en O(n) tiempo y O(1) espacio. La idea es realizar un seguimiento del elemento anterior en bucle. Agregue el elemento anterior usando la variable extra y el siguiente elemento para obtener cada elemento.
A continuación se muestra la implementación de esta idea.
C++
// C++ program to update every array element with // sum of previous and next numbers in array #include <iostream> using namespace std; void ReplaceElements(int arr[], int n) { // Nothing to do when array size is 1 if (n <= 1) return; // store current value of arr[0] and update it int prev = arr[0]; arr[0] = arr[0] + arr[1]; // Update rest of the array elements for (int i = 1; i < n - 1; i++) { // Store current value of next iteration int curr = arr[i]; // Update current value using previews value arr[i] = prev + arr[i + 1]; // Update previous value prev = curr; } // Update last array element separately arr[n - 1] = prev + arr[n - 1]; } // Driver program int main() { int arr[] = { 2, 3, 4, 5, 6 }; int n = sizeof(arr) / sizeof(arr[0]); ReplaceElements(arr, n); // Print the modified array for (int i = 0; i < n; i++) cout << arr[i] << " "; return 0; }
Java
// Java program to update every array element with // sum of previous and next numbers in array import java.io.*; class GFG { static void ReplaceElements(int arr[], int n) { // Nothing to do when array size is 1 if (n <= 1) { return; } // store current value of arr[0] and update it int prev = arr[0]; arr[0] = arr[0] + arr[1]; // Update rest of the array elements for (int i = 1; i < n - 1; i++) { // Store current value of next iteration int curr = arr[i]; // Update current value using previews value arr[i] = prev + arr[i + 1]; // Update previous value prev = curr; } // Update last array element separately arr[n - 1] = prev + arr[n - 1]; } // Driver program public static void main (String[] args) { int arr[] = {2, 3, 4, 5, 6}; int n = arr.length; ReplaceElements(arr, n); // Print the modified array for (int i = 0; i < n; i++) { System.out.print(arr[i] + " "); } } } // This code is contributed by akt_mit
Python 3
# Python 3 program to update every array # element with sum of previous and next # numbers in array def ReplaceElements(arr, n): # Nothing to do when array size is 1 if (n <= 1): return # store current value of arr[0] # and update it prev = arr[0] arr[0] = arr[0] + arr[1] # Update rest of the array elements for i in range(1, n - 1): # Store current value of # next iteration curr = arr[i] # Update current value using # previews value arr[i] = prev + arr[i + 1] # Update previous value prev = curr # Update last array element separately arr[n - 1] = prev + arr[n - 1] # Driver Code if __name__ == "__main__": arr = [ 2, 3, 4, 5, 6 ] n = len(arr) ReplaceElements(arr, n) # Print the modified array for i in range(n): print (arr[i], end = " ") # This code is contributed # by ChitraNayal
C#
// C# program to update every array element with // sum of previous and next numbers in array using System; public class GFG { static void ReplaceElements(int []arr, int n) { // Nothing to do when array size is 1 if (n <= 1) { return; } // store current value of arr[0] and update it int prev = arr[0]; arr[0] = arr[0] + arr[1]; // Update rest of the array elements for (int i = 1; i < n - 1; i++) { // Store current value of next iteration int curr = arr[i]; // Update current value using previews value arr[i] = prev + arr[i + 1]; // Update previous value prev = curr; } // Update last array element separately arr[n - 1] = prev + arr[n - 1]; } // Driver program public static void Main() { int []arr = {2, 3, 4, 5, 6}; int n = arr.Length; ReplaceElements(arr, n); // Print the modified array for (int i = 0; i < n; i++) { Console.Write(arr[i] + " "); } } } // This code is contributed by Rajput-JI
PHP
<?php // PHP program to update every array // element with sum of previous and // next numbers in array function ReplaceElements($arr, $n) { // Nothing to do when array // size is 1 if ($n <= 1) return; // store current value of // arr[0] and update it $prev = $arr[0]; $arr[0] = $arr[0] + $arr[1]; // Update rest of the array elements for ($i = 1; $i < $n - 1; $i++) { // Store current value of // next iteration $curr = $arr[$i]; // Update current value using // previews value $arr[$i] = $prev + $arr[$i + 1]; // Update previous value $prev = $curr; } // Update last array element // separately $arr[$n - 1] = $prev + $arr[$n - 1]; return $arr; } // Driver Code $arr = array(2, 3, 4, 5, 6); $n = sizeof($arr); $arr1 = ReplaceElements($arr, $n); // Print the modified array for ($i = 0; $i < $n; $i++) echo $arr1[$i] . " "; // This code is contributed // by Akanksha Rai ?>
Javascript
<script> // Javascript program to update every array element with // sum of previous and next numbers in array function ReplaceElements(arr, n) { // Nothing to do when array size is 1 if (n <= 1) { return; } // store current value of arr[0] and update it let prev = arr[0]; arr[0] = arr[0] + arr[1]; // Update rest of the array elements for (let i = 1; i < n - 1; i++) { // Store current value of next iteration let curr = arr[i]; // Update current value using previews value arr[i] = prev + arr[i + 1]; // Update previous value prev = curr; } // Update last array element separately arr[n - 1] = prev + arr[n - 1]; } let arr = [2, 3, 4, 5, 6]; let n = arr.length; ReplaceElements(arr, n); // Print the modified array for (let i = 0; i < n; i++) { document.write(arr[i] + " "); } </script>
5 6 8 10 11
Complejidad del tiempo – O(N)
Publicación traducida automáticamente
Artículo escrito por imdhruvgupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA