Во время интервью была задана следующая проблема: < /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
Последовательные пары делится на 3 ⇐ JAVA
Программисты JAVA общаются здесь
1738312081
Anonymous
Во время интервью была задана следующая проблема: < /p>
Учитывая массив целых чисел в качестве ввода, размер массива равен n < /code>.
Выполните приведенные ниже шаги в цикле до тех пор, пока первые элементы n-1 в списке не являются кратными 3.
для Индекс массива I , запустите с i = 0 и продолжайте до I = N-2 :
Multiply Array [i] и массив [i+1 ] , если продукт делится на 3, то замените массив [i] на продукт, в противном случае не изменяйте его.
Последний элемент в Список не может иметь пары, поэтому не нужно ее обрабатывать. /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[i] % 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[i] * a[i + 1];
if (product % 3 == 0) {
a[i] = 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 тестовых случаев, в то время как оставшиеся все потерпели неудачу. Неудачные тестовые случаи скрыты, поэтому я не вижу их.
Какой правильный подход для решения этой проблемы?
Подробнее здесь: [url]https://stackoverflow.com/questions/79400944/consecutive-pairs-divisible-by-3[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия