Зачем в правильном решении переменной secondMin присваивают значение переменной min?? Ведь secondMin имеет тоже самое значение что и min (MAX_VALUE), получается передаем тоже самое, это только путает и усложняет логику в моем понимании, поправьте пожалуйста если не прав. int min = Integer.MAX_VALUE; int secondMin = Integer.MAX_VALUE; в правильном решении (платформа): if (tmp < min) { secondMin = min; min = tmp; } else if (tmp > min && tmp < secondMin) { secondMin = tmp; } в моем решении (работает): if (number < min) { min = number; } else if (number > min && number < secondMin) { secondMin = number; }