Встречается на собеседованиях • сегодня

За какое минимальное количество взвешиваний из 9 монет можно найти фальшивую

Задача решается за 2 взвешивания с использованием метода деления на группы.

  1. Первое взвешивание: Делим 9 монет на 3 группы по 3 монеты. Взвешиваем две группы.
    • Если весы равны, фальшивая монета в третьей группе.
    • Если нет, фальшивая в более легкой/тяжелой группе.
  1. Второе взвешивание: Берем 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);
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы