Встречается на собеседованиях • сегодня
За какое минимальное количество взвешиваний из 9 монет можно найти фальшивую
Задача решается за 2 взвешивания с использованием метода деления на группы.
- Первое взвешивание: Делим 9 монет на 3 группы по 3 монеты. Взвешиваем две группы.
- Если весы равны, фальшивая монета в третьей группе.
- Если нет, фальшивая в более легкой/тяжелой группе.
- Второе взвешивание: Берем 2 монеты из подозрительной группы и взвешиваем.
- Если равны, фальшивая — оставшаяся.
- Если нет, сразу видна фальшивая.
java
int findFakeCoin(int[] coins) {
int group1 = coins[0] + coins[1] + coins[2];
int group2 = coins[3] + coins[4] + coins[5];
if (group1 == group2) {
return coins[6] == coins[7] ? 8 : (coins[6] < coins[7] ? 6 : 7);
} else {
int lighterGroup = group1 < group2 ? 0 : 3;
return coins[lighterGroup] == coins[lighterGroup + 1]
? lighterGroup + 2
: (coins[lighterGroup] < coins[lighterGroup + 1] ? lighterGroup : lighterGroup + 1);
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы