Dada una array de strings artículo[] y una array de enteros precio[] donde precio[i] es el precio del artículo[i] cuando se compra en la i -ésima tienda. La tarea es encontrar el valor de precio más bajo, más alto y promedio para todos los artículos comprados.
Ejemplos:
Entrada: artículo[] = {“juguete”, “bolígrafo”, “cuaderno”, “bolígrafo”}, precio[] = {2, 1, 3, 2}
Salida:
Artículo Mín. Máx
. Bolígrafo promedio 1 2 1.5
juguete 2 2 portátil 2.0
3 3 3.0Entrada: artículo[] = {“automóvil”, “automóvil”}, precio[] = {20000, 30000};
Salida:
Artículo Min Max Promedio
coche 20000 30000 25000.0
Enfoque: cree un HashMap donde el nombre del elemento será una string y el valor será un objeto que almacenará cuatro tipos de valores para cada elemento, es decir
- min: Para almacenar el valor mínimo para un elemento del tipo actual.
- max: para almacenar el valor máximo de un elemento del tipo actual.
- total: Total del artículo del tipo actual.
- sum: Suma de los precios de los artículos de tipo actual.
Ahora, para cada elemento almacenado en el Hashmap, el precio mínimo y máximo se almacena en el objeto de valor y el promedio se puede calcular como suma/total .
A continuación se muestra la implementación del enfoque anterior:
Java
// Java implementation of the approach import java.util.*; class GFG { // To store an item static class Item { // To store the minimum and the // maximum price for the item int min, max; // To store the total number of items // of the current type and the // total cost of buying them int total, sum; // Initializing an element Item(int price) { min = price; max = price; total = 1; this.sum = price; } } // Function to find the minimum, the maximum // and the average price for every item static void findPrices(String item[], int price[], int n) { // To store the distinct items HashMap<String, Item> map = new HashMap<>(); // For every item for (int i = 0; i < n; i++) { // If the current item has aready been // purchased earlier from a different shop if (map.containsKey(item[i])) { // Get the item Item currItem = map.get(item[i]); // Update its minimum and maximum price so far currItem.min = Math.min(currItem.min, price[i]); currItem.max = Math.max(currItem.max, price[i]); // Increment the total count of the current item currItem.total++; // Add the current price to the sum currItem.sum += price[i]; } else { // The item has been purchased for the first time Item currItem = new Item(price[i]); map.put(item[i], currItem); } } // Print all the items with their // minimum, maximum and average prices System.out.println("Item Min Max Average"); for (Map.Entry<String, Item> ob : map.entrySet()) { String key = ob.getKey(); Item currItem = ob.getValue(); System.out.println(key + " " + currItem.min + " " + currItem.max + " " + ((float)currItem.sum / (float)currItem.total)); } } // Driver code public static void main(String args[]) { String item[] = { "toy", "pen", "notebook", "pen" }; int n = item.length; int price[] = { 2, 1, 3, 2 }; findPrices(item, price, n); } }
C#
// C# implementation of the approach using System; using System.Collections.Generic; class GFG { // To store an item public class Item { // To store the minimum and the // maximum price for the item public int min, max; // To store the total number of items // of the current type and the // total cost of buying them public int total, sum; // Initializing an element public Item(int price) { min = price; max = price; total = 1; this.sum = price; } } // Function to find the minimum, the maximum // and the average price for every item static void findPrices(String []item, int []price, int n) { // To store the distinct items Dictionary<String, Item> map = new Dictionary<String, Item>(); // For every item for (int i = 0; i < n; i++) { // If the current item has aready been // purchased earlier from a different shop if (map.ContainsKey(item[i])) { // Get the item Item currItem = map[item[i]]; // Update its minimum and // maximum price so far currItem.min = Math.Min(currItem.min, price[i]); currItem.max = Math.Max(currItem.max, price[i]); // Increment the total count of // the current item currItem.total++; // Add the current price to the sum currItem.sum += price[i]; } else { // The item has been purchased // for the first time Item currItem = new Item(price[i]); map.Add(item[i], currItem); } } // Print all the items with their // minimum, maximum and average prices Console.WriteLine("Item Min Max Average"); foreach(KeyValuePair<String, Item> ob in map) { String key = ob.Key; Item currItem = ob.Value; Console.WriteLine(key + " " + currItem.min + " " + currItem.max + " " + ((float)currItem.sum / (float)currItem.total)); } } // Driver code public static void Main(String []args) { String []item = { "toy", "pen", "notebook", "pen" }; int n = item.Length; int []price = { 2, 1, 3, 2 }; findPrices(item, price, n); } } // This code is contributed by 29AjayKumar
Item Min Max Average pen 1 2 1.5 toy 2 2 2.0 notebook 3 3 3.0