Я пытаюсь написать функцию, чтобы найти максимальную разницу между любыми двумя элементами в массиве (1D). Я уже решил это несколькими способами (я применяю в Java)
- С 2 вложенных цикла (работает, находит разницу и берет максимум)
- При 1 л oop итерации (работает, находит минимальное и максимальное значения после их разницы: (max - min))
- Использование потока дважды (работает , находит максимум и минимум с помощью функций потока min () и max () и возвращаемой разности).
Теперь вопрос: как написать функцию, которая вычисляет максимальную разницу между любыми двумя элементами в массиве используя ровно 1 поток ?
Вот последнее, что я написал:
public static int maxDifference(int[] arr) {
return Arrays.stream(arr).min().orElseThrow(NoSuchElementException::new) -
Arrays.stream(arr).max().orElseThrow(NoSuchElementException::new);
}