Последовательные пары делится на 3JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Последовательные пары делится на 3

Сообщение Anonymous »

Во время интервью была задана следующая проблема: < /p>

Учитывая массив целых чисел в качестве ввода, размер массива равен n < /code>.
Выполните приведенные ниже шаги в цикле до тех пор, пока первые элементы n-1 в списке не являются кратными 3.
для Индекс массива I , запустите с i = 0 и продолжайте до I = N-2 :
Multiply Array и массив [i+1 ] , если продукт делится на 3, то замените массив на продукт, в противном случае не изменяйте его.
Последний элемент в Список не может иметь пары, поэтому не нужно ее обрабатывать. /p>
Пример 1 < /h3>
Input: [34, 56, 20, 90, 100]
Output: 3
< /code>
Объяснение < /h3>
Iteration 1: [34, 56, 1800, 9000, 100]
Iteration 2: [34, 100800, 16200000, 900000, 100]
Iteration 3: [3427200, 100800, 16200000, 90000000, 100]
< /code>
Следовательно, количество итераций составляет 3. < /p>
Пример 2 < /h3>
Input: [1, 333, 222, 22]
Output: 1
< /code>
Объяснение < /h3>
Iteration 1: [333, 333, 222, 22]
< /code>
Первые 3 номера имеют многочисленные из них 3. Следовательно, количество итераций составляет 1. < /p>
< /blockquote>
Вот мой Код: < /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»