Задача то легкая, вот только я без Гугла бы не вспомнил формулу арифметической прогрессии 😆
@Marcov1ch5 ай бұрын
Да, это единственная проблема при решении😂, а так можно было бы решить через Arrays.stream(array).sum()
@RumEvo9 ай бұрын
Интересная задачка! Давай еще похожих, для разминки мозгов) лишним никогда не будет!!
@SergeyKykov9 ай бұрын
Для того, чтобы заметить, что число пропущено, достаточно сравнить длину массива с n. Если сделать это в начале, не нужно будет массив суммировать. А особо экономные могут не суммировать в отдельную переменную sum, а вычитать из sumAll.
@Px-eb2dy9 ай бұрын
А как ты поймешь, что есть N?
@SergeyKykov9 ай бұрын
@@Px-eb2dy я это давно понял, а ты поймёшь, если на код посмотришь.
@АлексейА-ц5м9 ай бұрын
@@SergeyKykovзачем так грубо? Если ты понял то подскажи ему
@АлексейА-ц5м9 ай бұрын
@@Px-eb2dy Тебе дано n в котором лежит длина массива. И дан массив. Возьми длину массива и сравни с n. Если равны то в массиве ничего не пропущено, при условии что в массив не подсунули другое число в место пропущенного)
@SergeyKykov9 ай бұрын
@@АлексейА-ц5м затем, что прежде чем задавать вопрос, нужно самому хоть маленько подумать. Где ещё искать непонятную латинскую букву, с которой рекомендуют что-то сравнить, как не коде (и/или условии)?
@Андрюха_айтишник9 ай бұрын
На примере надо бы перемешать элементы массива, в задаче сказано в произвольном порядке, а то так кажется что есть способ просто сравнить со счётчиком цикла. Всегда удевляло как такая задача может быть связана с дальнейшей работой. 😂. Спасибо, Сергей как всегда интересно.
@Coopersbush5 ай бұрын
Тогда просто применяется сортировка
@Drained-x9m9 ай бұрын
мы можем банально проверять по каждому элементу массива, необязательно морочиться с суммой всех элементов массива. внутри цикла банально ставим условие: Если массив[i] != i+1 .то выводим i+1 в консоль как пропущенное число и прерываем цикл. Если у нас массив не заполнен прогрессией, то только тогда можно применить сумму всех элементов. Допустим, у нас есть шаг прогрессии L, тогда условие будет таково: Если i ==0 , то если массив[i] != i+L, то прерываем цикл и выводим в консоль i+L как пропущенное число, если условие i==0 ложно , то если массив[i]!= (i+1)*L то выводим в консоль (i+1)*L как пропущенное число. А про все эти мудрености с суммой прогрессии можно забыть ,когда у нас есть оператор цикла и мы можем спокойно пользоваться его свойствами.
@arhitutorials9 ай бұрын
Для того в условии задачи написано, что числа в массиве лежат в произвольном порядке.
@Px-eb2dy9 ай бұрын
Провал на уровне невнимательно прочитаного ТЗ
@Drained-x9m9 ай бұрын
@@arhitutorials а мы показываем пример с последовательностью натруальных чисел.
@Noname-pz2ps9 ай бұрын
Так комментарий всё равно правильный если проверку числа в массиве выполнять через contains(). Потому что смысл пересчитывать все элементы если отсутствует одно из начальных чисел Да и пересчитывать все числа и считать прогрессию перед сравнением длинны массива с n. Зачем?
@motorInlive9 ай бұрын
Большое спасибо за интересную задачку, Сергей)) Пополнила свой список))
@Px-eb2dy9 ай бұрын
Задача видимо легкая (если почитать комментарии), но у меня в голове нарисовался гавнокод. С двумя массивами и тд. Спасибо за инфу, мне как человеку который такое не решал пригодится.
@АлексейПрохин-ф1р9 ай бұрын
Поддерживаю слова, что не сторонник задач на собеседовании. Но этот случай, собираю вариант, что то вроде решения в одну строку и пусть будет, по памяти медленное решение. Быстрый вариант, предпочитаю возможность только проговорить, если вспомню. А подобные вариант через if else, только для ознакомления. Спасибо
@RomanZaycev-ps9hh9 ай бұрын
For (i=1, i < (длина массива), i++) If i !=mass[i] result = i Else result = "нет пропусков" После цикла показать result Можно ещё прерывать цикл при несовпадении
@SergeyKykov9 ай бұрын
Аффтар словами не проговорил, что массив не упорядочен и в коде нарисовал упорядоченный, а о том, что числа расположены в произвольном порядке, только на экране написал.
@SergeyKykov9 ай бұрын
@@VitalyK_STU Задача формулируется на первой минуте ролика. До предложения решить её самостоятельно. До этого момента не сказано ни слова о том, что "цифры могут быть не по порядку". Хотя, написано на экране. В коде числа упорядочены. Нулевая задача любого исполнителя чего угодно, не только программиста - не додумывать пожелания заказчика. НЕ ДО-ДУ-МЫ-ВАТЬ. Первая задача постановщика, или как сейчас говорят аналитика - внятно сформулировать задачу. ВНЯТ-НО СФОР-МУ-ЛИ-РО-ВАТЬ. Задача автором ролика выполнена не полностью. А первая задача комментатора (а не интернет-тролля), в роли которого вы решили выступить - возражать по делу. ПО ДЕ-ЛУ. Дело обстоит именно так, как я его описал: на этапе постановки о неупорядоченности _не_ _сказано_ ни слова, но написано, Т.е., ваше "возражение" является придиркой. ПРИ-ДИР-КОЙ. Первая задача обсуждения задачи с коллегами - уточнить её суть, а не показать, кто тут самый умный или не очень, как получилось у вас. ИЛИ НЕ О-ЧЕНЬ. "Будьте проще, и люди к вам потянутся!".
@RomanZaycev-ps9hh9 ай бұрын
Ехал в машине, слушал в наушниках. На остановке накидал решение. Получается не совсем понял условие ! :)
@Noname-pz2ps9 ай бұрын
Ответьте пожалуйста Тут в задаче не хватает уточнения что числа не по порядку или еще условие потому что смысл всех этих расчётов если всё равно все элементы перебираются в цикле и при такой постановке достаточно перебрать и сравнить со счетчиком. Или я что то не учитываю? Второй момент. Зачем мне вычислять сумму всех чисел массива и вычислять прогрессию если я могу просто взять длину списка и сравнить с n до начала каких либо манипуляций в одну строчку кода? Третье. Если опять же это числа даже не по порядку, то почему не использовать проверку вхождения счетчика в список вместо вычислений?
@arhitutorials9 ай бұрын
1) в условии задачи написано, что порядок чисел произвольный. 2) длина списка не позволит узнать какого элемента не хватает. 3) можно все что угодно, тут кто-то и через сортировку предлагал делать. Этим вы покажете ваш оригинальный стиль решения задач)
@Noname-pz2ps9 ай бұрын
@@arhitutorialsпо 2 пункту. Имею ввиду то что если количество элементов равно n, то нет смысла что то делать, а в Вашем варианте вы в начале всё суммируется затем считается прогрессию и сравнивается равны и если да то все на месте. На мой взгляд много лишней работы при отсутствии проблемы) 3. Просто непонятно будет ли считаться многократным прохождение списка использование contains. Потому что если нет, то это 2 строки кода. Цикл и проверка на входит число в список или нет
@batkorub9 ай бұрын
Нужно от суммы чисел S = (n/2) * (1 + n) отнимать по очереди каждое число
@ВасилийЮдин-п8ы9 ай бұрын
Надеюсь когда нибудь будет собеседование )
@АсенькаАлей9 ай бұрын
хотела предложить идти по полному массиву и искать индекс элемента в исследуемом массиве Arrays.asList(newArray).indexOf(fullArray[i]) но чёт не различает, на первом же говорит, что нет такого в исследуемом, хотя там есть(( Почему? но это и стрёмно, конечно, по сравнению с вами предложенным решением, тк внутри то метода цикл явно есть
@АсенькаАлей9 ай бұрын
нашла, дело было в том, что newArray был int[ ] , а Arrays не работает с примитивами и делал мне список из одного массива, естественно, не находя в таком списке никакого инта. В целом получилось через такой подход решить, интересно насколько верным считалось бы такое решение?
@szcoder779 ай бұрын
Попробовал просто в лоб, что первое пришло в голову... пробежаться по массиву и проверить исключающие условия int[] array = {1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12}; int prev = 0; for (int i = 0; i < array.Length; i++) { if (i == 0 && array[i] > 1) { Console.WriteLine("1"); return; } if (array[i] - prev != 1) { Console.WriteLine(prev + 1); return; } prev = array[i]; } Console.ReadKey();
@KARTER_OMEGA9 ай бұрын
Интересно. Если известно число элементов массива, и известно что может быть пропущен лишь 1 элемент, то, может, короче будет весь массив прогнать через цикл 1 разок? Тобишь, сам цикл мы ставим на 10 повторений, каждый проход числа у нас будет регистрироваться итератором (i, например, и ставим условие внутри цикла. Сначала, вне цикла i = 0 И делаем так Фор i ин рандже 10 Иф "наш массив для проверки[i]" != i: "Принтуем: "Пропущено число: ", i" Иначе иф i = 10: "Принтуем: "Массив целый." " Вроде сказано - за один проход по массиву. Пошагово, топ топ по массиву слева направо
@KARTER_OMEGA9 ай бұрын
Но это в случае чисел от 1 до n буквально В случае с случайным порядком и правда проще найти суммы нужного и фактического сложения всех элементов и вычесть один от другого. Но там только разница будет, олицетворяющее число на какой-то позиции, а не номер элемента.
@НикитаСологуб-щ3ц9 ай бұрын
А мне недавно (у одних жёлтых) попалось такое: есть отсортированный массив неубывающих чисел, например { 1 , 2, 4,4,5,6,6,7,9} и чтсло n =6 например, нужно найти самые крайние индексы всех чисел n которые есть в этом массиве.
@НикитаСологуб-щ3ц9 ай бұрын
И кстати, спасибо вам за разбор подобных задач и в целом за контент который вы делаете. Часто можно у вас найти что-то увлекательное и интересное !
@Noname-pz2ps9 ай бұрын
@@НикитаСологуб-щ3ц нужно найти первое число больше n и предыдущее будет искомым id?
@fear17799 ай бұрын
Arrays.sort(array), дальше for{ } с условием if (i +1 != array[i]) { число пропущено}
@VasillaRobocraft9 ай бұрын
Сказано же - за один проход по массиву. Сортировка - это тоже проход.
@Dmitry_Kuznetsov6 ай бұрын
это уже On(logn) а задача требует O(n)
@Arabonishe9 ай бұрын
Если елемент с индексом і не равно элементу с индексом[і+1]-1, вернуть елемент массива с индексом [і] +1. Если пропущено число, то менее раза пройдешь по массиву.
@arhitutorials9 ай бұрын
Числа в любом порядке могут располагаться по условию задачи.
@JavaITEducation-ql5fs9 ай бұрын
@@arhitutorials Тоже подумал про этот вариант. Для начала только отсортировать массив нужно. Сортировка ведь не запрещена по условию?
@twobeerornottwobeer59739 ай бұрын
@@JavaITEducation-ql5fsнет нельзя, в условии задачи написано, что по массиву можно пройти только один раз, а сортировка это тот же обход массива.
@resuuserovich93998 ай бұрын
а почему нельзя сравнивать элемент массив с индексом? когда они неравны, то выходим. В этом случае даже не всегда нужно делать полный проход по массиву до конца.
@crazym8nd9 ай бұрын
вводных данных недостаточно, зная улсовие что цифра может быть одна,тогда конечно да,а если в сумме не хватает 5? и это может быть 4 + 1 или 2 + 3 какое-то глупое тестовое
@LAZIO149 ай бұрын
Спасибо, Серега! Забавно, что программисту ТОП уровня, дают на собесах задачи для Junior'ов)))
@arhitutorials9 ай бұрын
Есть поверье, что человек может выучить ответы на все вопросы и таким образом пройти собес, не умея программировать. По этому некоторые считают, что надо дать хотя бы простую задачу, чтоб убедиться, что соискатель вообще умеет писать код)
@BrainExplosive8 ай бұрын
вот еще одно из решеений int n = 10; int[] array = new int[] {1, 2, 3, 4, 5, 6, 8, 9, 10}; for (int i = array.length - 1; i >= 0; i--) { if (n != array[i]) { System.out.println(n); n--; } n--; }
@mywaytopro9 ай бұрын
А якщо два числа пропущені або декілька чисел?
@ffplucyflucy81319 ай бұрын
Ну тут задача в том, что пропущено только 1 число
@Игорь-и7ъ7й9 ай бұрын
Наверное хеш-мапу с ключом - число, и значением - количество появлений. И вытягивать по значению 0 прявлений. Но громоздко чето, наверняка есть что-то проще. Сори, я начинающий😅
@forKotlinsky9 ай бұрын
Фух, ещё не настолько сильно деградировал!
@genX7009 ай бұрын
Сумма чисел от 1 до n? Серьёзно? 🤦♂ Да любой школьник знает, что это n * (n + 1) / 2. Зачем тут цикл городить?
@Slava-Osipov9 ай бұрын
Круто, а как вы узнаете какое число пропущено и пропущено ли оно вообще?
@genX7009 ай бұрын
@@Slava-Osipov Элементарно! Вычитаешь сумму элементов массива из суммы чисел от 1 до n, и вуаля - вот тебе и пропущенное число.
@Slava-Osipov9 ай бұрын
@@genX700 сумма элементов массива? И как ее без цикла посчитать, смотрим первое свое сообщение. И смотрим что сделал автор
@genX7009 ай бұрын
@@Slava-Osipov Я же забыл, что мы не можем использовать формулы и должны все делать через циклы. Спасибо, что напомнил! В следующий раз буду внимательнее
@Slava-Osipov9 ай бұрын
@@genX700 напиши-ка формулу как посчитать сумму элементов, например: [1, 2, 3, 5] четыре элемента, значения от 1 до 5, какого не хватает, не известно