Dada una array de enteros no negativos. Necesitamos construir una array dada a partir de una array de todos los ceros. Se nos permite hacer la siguiente operación.
- Elija cualquier índice de digamos i y agregue 1 a todos los elementos o reste 1 de todos los elementos desde el índice i hasta el último índice. Básicamente, aumentamos/disminuimos un sufijo en 1.
Ejemplos:
Input : brr[] = {1, 2, 3, 4, 5} Output : 5 Here, we can successively choose indices 1, 2, 3, 4, and 5, and add 1 to corresponding suffixes. Input : brr[] = {1, 2, 2, 1} Output : 3 Here, we choose indices 1 and 2 and adds 1 to corresponding suffixes, then we choose index 4 and subtract 1.
Sea brr[] una array y arr[] una array actual (que inicialmente es 0).
El enfoque es simple:
- Para hacer que el primer elemento sea igual, tenemos que hacer |brr[1]| operaciones. Una vez hecho esto, arr[2], arr[3], arr[4], … arr[n] = brr[1].
- Para hacer que el Segundo elemento sea igual, tenemos que hacer |brr[2] – brr[1]| operaciones. Una vez hecho esto, arr[3], arr[4], arr[5], … arr[n] = brr[2].
En general, para hacer arr[i] = brr[i] necesitamos hacer |brr[i] – b[i – 1]| operaciones. Así que en total tenemos que hacer |b[1]| + |b[2] – b[1]| + |b[3] – b[2]| + … + |b[n] – b[n – 1]| operaciones.
A continuación se muestra la implementación de CPP y Java del enfoque anterior:
C++
// CPP program to find minimum number of steps // to make the array equal to the given array. #include <bits/stdc++.h> using namespace std; // function to calculate min_Steps int minSteps(int arr[], int n) { int min_Steps = 0; for (int i = 0; i < n; i++) { if (i > 0) min_Steps += abs(arr[i] - arr[i - 1]); // first element of arr. else min_Steps += abs(arr[i]); } return min_Steps; } // driver function int main() { int arr[] = { 1, 2, 2, 1 }; int n = sizeof(arr) / sizeof(arr[0]); cout << minSteps(arr, n) << endl; }
Java
// Java program to find minimum number of steps // to make the array equal to the given array. import java.util.*; import java.lang.*; public class GfG { // function to calculate min_Steps public static int minSteps(int arr[], int n) { int min_Steps = 0; for (int i = 0; i < n; i++) { if (i > 0) min_Steps += Math.abs(arr[i] - arr[i - 1]); // first element of arr. else min_Steps += Math.abs(arr[i]); } return min_Steps; } // driver function public static void main(String argc[]) { int[] arr = new int[] { 1, 2, 2, 1 }; int n = 4; System.out.println(minSteps(arr, n)); } }
Python3
# Python 3 program to find minimum number # of steps to make the array equal to the # given array. # function to calculate min_Steps def minSteps(arr, n): min_Steps = 0 for i in range(n): if (i > 0): min_Steps += abs(arr[i] - arr[i - 1]) # first element of arr. else: min_Steps += abs(arr[i]) return min_Steps # Driver Code if __name__ == '__main__': arr = [ 1, 2, 2, 1 ] n = len(arr) print(minSteps(arr, n)) # This code is contributed # by PrinciRaj19992
C#
// C# program to find minimum number of steps // to make the array equal to the given array. using System; public class GfG { // function to calculate min_Steps public static int minSteps(int[] arr, int n) { int min_Steps = 0; for (int i = 0; i < n; i++) { if (i > 0) min_Steps += Math.Abs(arr[i] - arr[i - 1]); // first element of arr. else min_Steps += Math.Abs(arr[i]); } return min_Steps; } // driver function public static void Main() { int[] arr = new int[] { 1, 2, 2, 1 }; int n = 4; Console.WriteLine(minSteps(arr, n)); } } // This code is contributed by vt_m
PHP
<?php // PHP program to find minimum // number of steps to make the // array equal to the given array. // function to calculate min_Steps function minSteps($arr, $n) { $min_Steps = 0; for ($i = 0; $i < $n; $i++) { if ($i > 0) $min_Steps += abs($arr[$i] - $arr[$i - 1]); // first element of arr. else $min_Steps += abs($arr[$i]); } return $min_Steps; } // Driver Code $arr = array( 1, 2, 2, 1 ); $n = sizeof($arr) ; echo minSteps($arr, $n),"\n"; // This code is contributed by ajit ?>
Javascript
<script> // Javascript program to find minimum number of steps // to make the array equal to the given array. // function to calculate min_Steps function minSteps(arr, n) { let min_Steps = 0; for (let i = 0; i < n; i++) { if (i > 0) min_Steps += Math.abs(arr[i] - arr[i - 1]); // first element of arr. else min_Steps += Math.abs(arr[i]); } return min_Steps; } let arr = [ 1, 2, 2, 1 ]; let n = arr.length; document.write(minSteps(arr, n)); // This code is contributed by divyeshrabadiya07. </script>
Producción
3
Complejidad temporal: O(n).
Publicación traducida automáticamente
Artículo escrito por Sagar Shukla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA