Dada una lista desordenada de números enteros, encuentre valores máximos y mínimos en ella.
Input : list = [10, 4, 3, 2, 1, 20] Output : max = 20, min = 1 Input : list = [10, 400, 3, 2, 1, -1] Output : max = 400, min = -1
Clasificación
Este es el enfoque menos eficiente pero hará el trabajo. La idea es ordenar la lista en orden natural, entonces el primer o último elemento sería el elemento mínimo y máximo respectivamente. A continuación se muestra la implementación en Java.
// This java program find minimum and maximum value // of an unsorted list of Integer by using Collection import java.util.ArrayList; import java.util.Collections; import java.util.List; public class GFG { // function to find minimum value in an unsorted // list in Java using Collection public static Integer findMin(List<Integer> list) { // check list is empty or not if (list == null || list.size() == 0) { return Integer.MAX_VALUE; } // create a new list to avoid modification // in the original list List<Integer> sortedlist = new ArrayList<>(list); // sort list in natural order Collections.sort(sortedlist); // first element in the sorted list // would be minimum return sortedlist.get(0); } // function return maximum value in an unsorted // list in Java using Collection public static Integer findMax(List<Integer> list) { // check list is empty or not if (list == null || list.size() == 0) { return Integer.MIN_VALUE; } // create a new list to avoid modification // in the original list List<Integer> sortedlist = new ArrayList<>(list); // sort list in natural order Collections.sort(sortedlist); // last element in the sorted list would be maximum return sortedlist.get(sortedlist.size() - 1); } public static void main(String[] args) { // create an ArrayList Object list List<Integer> list = new ArrayList<>(); // add element in ArrayList object list list.add(44); list.add(11); list.add(22); list.add(33); // print min amd max value of ArrayList System.out.println("Min: " + findMin(list)); System.out.println("Max: " + findMax(list)); } }
Producción:
Min: 11 Max: 44
Colecciones.max()
El método Collections.min() devuelve el elemento mínimo de la colección especificada y Collections.max() devuelve el elemento máximo de la colección especificada, según el orden natural de sus elementos.
// This java program find minimum and maximum value // of an unsorted list of Integer by using Collection import java.util.ArrayList; import java.util.Collections; import java.util.List; public class GFG { // function to find minimum value in an unsorted // list in Java using Collection public static Integer findMin(List<Integer> list) { // check list is empty or not if (list == null || list.size() == 0) { return Integer.MAX_VALUE; } // return minimum value of the ArrayList return Collections.min(list); } // function return maximum value in an unsorted // list in Java using Collection public static Integer findMax(List<Integer> list) { // check list is empty or not if (list == null || list.size() == 0) { return Integer.MIN_VALUE; } // return maximum value of the ArrayList return Collections.max(list); } public static void main(String[] args) { // create an ArrayList Object list List<Integer> list = new ArrayList<>(); // add element in ArrayList object list list.add(44); list.add(11); list.add(22); list.add(33); // print min amd max value of ArrayList System.out.println("Min: " + findMin(list)); System.out.println("Max: " + findMax(list)); } }
Producción:
Min: 11 Max: 44
Ingenuo
Esta es una forma ingenua de encontrar el valor mínimo y máximo en una lista desordenada donde verificamos todos los valores presentes en la lista y mantenemos el valor mínimo y máximo encontrado hasta ahora.
// This java program find minimum and maximum value // of an unsorted list of Integer import java.util.ArrayList; import java.util.List; public class GFG { // Naive function to find minimum value in an // unsorted list in Java public static Integer findMin(List<Integer> list) { // initialize min to some maximum value Integer min = Integer.MAX_VALUE; // loop through every element in the list and // compare min found so far with current value for (Integer i : list) { // update min if found to be more than // the current element if (min > i) { min = i; } } return min; } // This function return maximum value in an // unsorted list in Java public static Integer findMax(List<Integer> list) { // initialize max variable to minimum value Integer max = Integer.MIN_VALUE; // loop for compare to current max value // with all list element and find maximum value for (Integer i : list) { // update max if found to be less than // the current element if (max < i) { max = i; } } return max; } public static void main(String[] args) { // create an ArrayList Object list List<Integer> list = new ArrayList<>(); // add element in ArrayList object list list.add(44); list.add(11); list.add(22); list.add(33); // print min amd max value of ArrayList System.out.println("Min: " + findMin(list)); System.out.println("Max: " + findMax(list)); } }
Producción:
Min: 11 Max: 44