Выполните приведенные ниже шаги в цикле до тех пор, пока первые элементы n-1 в списке не являются кратными 3. > и массив [i+1] , если продукт делится на 3, то замените массив на продукт, иначе не изменяйте его.
< P> Последний элемент в списке не может иметь пары, поэтому не нужно ее обрабатывать. 3.
Пример:
Код: Выделить всё
Input: [34, 56, 20, 90, 100]
Output: 3
Код: Выделить всё
Iteration 1: {34 56 1800 9000 100}
Iteration 2: {34 100800 16200000 900000 100}
Iteration 3: {3427200 100800 16200000 90000000 100}
Пример#2
Input: [1, 333, 222, 22]
Output: 1
< /code>
Объяснение:
Round 1: {333 333 222 22}
Первые 3 числа являются множеством 3. Следовательно, число итераций составляет 1. < /p >
Вот мой код: < /p>
public class Main {
public static int solve(int[] a) {
int n = a.length;
int rounds = 0;
while (true) {
boolean allMultiplesOfThree = true;
// Check if the first n-1 elements are already multiples of 3
for (int i = 0; i < n - 1; i++) {
if (a % 3 != 0) {
allMultiplesOfThree = false;
break;
}
}
// If all first n-1 elements are multiples of 3, return the rounds count
if (allMultiplesOfThree) {
return rounds;
}
// Increment rounds and update the array in place
rounds++;
for (int i = 0; i < n - 1; i++) {
int product = a * a[i + 1];
if (product % 3 == 0) {
a = product;
}
}
}
}
public static void main(String[] args) {
int[] input1 = {34, 56, 20, 90, 100};
System.out.println(solve(input1)); // Expected: 3
int[] input2 = {1, 333, 222, 22};
System.out.println(solve(input2)); // Expected: 1
}
}
< /code>
Эта проблема задается во время собеседования, было 8 тестовых случаев, мой код работал только для 2 тестовых случаев, оставшиеся не удалились (неудачные тестовые случаи скрыты, поэтому я не могу их видеть )
Какой правильный подход для решения этой проблемы.
Подробнее здесь: https://stackoverflow.com/questions/794 ... sible-by-3
Мобильная версия