Есть тестовая задача, я немного подсел в алгоритмах, можете подсказать какой лучше подойдет для задачи?
Есть массив чисел от 1 до 100000000000. Массив отсортирован(1,2,3 ....99999999999,100000000000 ), но в нем одна цифра задвоилась(Например, [1,2,3,4,4,6,7 ...]). Надо написать метод который найдет отсутствующее число за минимальное время.
С чего бы очевидному бинарному поиску быть медленным?
Берём число в середине. Если оно совпадает со своим порядковым номером, то задвоение во второй половине, если на единицу меньше, то в первой половине. Продолжаем делить дальше нужную половину.
Нужно только не запутаться с индексами и значениями
В "правильной" последовательности чисел сумма каждой пары чисел, если брать с головы и с хвоста, не изменяется. Чтобы добраться до того места где спутались цифры перебором понадобится N/2, и еще нужно будет выяснить какое из двух чисел неправильное например проверив его соседей
Во второй задаче нужно разбить текст на токены
str = "Hello I'm your String";
String[] splited = str.split("\\s+");
https://stackoverflow.com/questions/7899525/how-to...
а потом пройти по массиву и выдать каждое третье слово. Вопрос еще в том, что делать со знаками препинания которые как правило прилеплены к слову. По уму их надо откинуть.
Алексей Семенов, Ява не поддерживает массивы размером больше MAXINT. т.е размерность ожидается типа int.
Уберите l в размерности, либо добавьте каст long[(int)100000000l] автоматическое приведение типов в этом случае не работает из-за возможной потери точности.
Если нужен массив очень большой придется воспользоватся структурами данных типа ArrayList