Ключевой момент: сначала проверяем худший сценарий (стиль ≤ 2), потом лучший (стиль ≥ 8), и только потом средний вариант.
public int dateFashion(int you, int date) {
// Сначала проверяем провальный случай
if (you <= 2 || date <= 2) {
return 0;
}
// Затем проверяем гарантированный успех
else if (you >= 8 || date >= 8) {
return 2;
}
// Во всех остальных случаях — "возможно"
else {
return 1;
}
}Так почему же именно такой порядок проверок?
Порядок ВАЖЕН! Если бы мы поменяли условия местами:
// НЕПРАВИЛЬНЫЙ вариант!
if (you >= 8 || date >= 8) {
return 2;
} else if (you <= 2 || date <= 2) {
return 0; // Эта проверка никогда не сработает для пар (10, 1)!
} else {
return 1;
}
В неправильном варианте для пары (10, 1) сработала бы первая проверка и вернула 2, хотя по условию должен быть 0 (один из пары имеет стиль ≤ 2).
Есть и альтернативное решение (менее читаемое, но компактное):
public int dateFashion(int you, int date) {
if (you <= 2 || date <= 2) return 0;
return (you >= 8 || date >= 8) ? 2 : 1;
}Сталкивались ли вы с похожими задачами на приоритетность условий в реальных проектах? Поделитесь опытом!
👉 Java Rocks | #задача
