Вчера был мой 58-й день кодинга. Я решил одну проблему

проблема: Максимальный подмассив продуктов

Дан массив Arr[], содержащий N целых чисел (может быть положительным, отрицательнымили нулем). Найдите продукт подмассива максимального продукта.

Пример 1:

Input:
N = 5
Arr[] = {6, -3, -10, 0, 2}
Output: 180
Explanation: Subarray with maximum product
is [6, -3, -10] which gives product as 180.

Пример 2:

Input:
N = 6
Arr[] = {2, 3, 4, 5, -1, 0}
Output: 120
Explanation: Subarray with maximum product
is [2, 3, 4, 5] which gives product as 120.

Ваша задача
Вам не нужно ничего читать или печатать. Ваша задача — завершить функцию maxProduct(), которая принимает в качестве параметров массив целых чисел arr и n и возвращает целое число, обозначающее ответ.
Примечание. Используйте 64-битный целочисленный тип данных, чтобы избежать переполнения.

Ожидаемая временная сложность: O(N)
Ожидаемое вспомогательное пространство: O(1)

Решение (в Java):

class Solution {

    long maxProduct(int[] arr, int n) {
     long msf=arr[0];
     long meh=msf, mineh=msf;
       for(int i=1; i<arr.length; i++){
        if(arr[i]<0){
            long temp = meh;
            meh=mineh;
            mineh=temp;
        }
        meh=Math.max(arr[i], meh*arr[i]);
        mineh=Math.min(arr[i], mineh*arr[i]);
        msf=Math.max(msf, meh);
        
       }
    return msf;
    }
}