Допустим, есть массив целых чисел. Надо все элементы меньше нуля превратить в нули.
Есть два очевидных способа:
1. Пройтись по исходному массиву и сделать замену. Достоинство: не тратится лишняя память. Недостаток: теряются исходные данные.
2. Сделать копию массива и произвести замену в ней. Достоинство: не теряются исходные данные. Недостаток: расход ресурсов происходит всегда, даже если ни одного элемента заменено не было.
Можно как-то оптимизировать такую функцию? Например, чтобы копия создавалась только в тот момент, когда найден первый отрицательный элемент. Если ни одного не было найдено, то из функции возвращается исходный массив. Не копия исходного массива, а сам исходный массив!