Дана последовательность целых чисел. Найдите минимально возможное произведение
двух элементов, стоящих на разных позициях.
// MinPairProduct возвращает min(nums[i]*nums[j]) по всем i != j.
// ok == false, если элементов меньше двух.
func MinPairProduct(nums []int) (p int, ok bool)
Примеры
[18, 14, 12, 4, 6] → 24, true (4·6)
[3, -2, 5] → -10, true (−2·5)
[-3, -4, 1] → -4, true (−4·1)
[-3, -4] → 12, true
[7] → 0, false
Ограничения
0 ≤ len(nums) ≤ 10⁶, |nums[i]| ≤ 10⁹ (произведение помещается в int64).
- Числа могут быть отрицательными, нулём, повторяться.
- Входной слайс не изменять. Ожидается один проход O(n) без аллокаций.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.