|
|
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Задача. Есть массив целых чисел. Необходимо вывести числа из этого массива в порядке частоты их встречаемости в массиве. К примеру массив 12,2,5,6,6,243,5,6 Вывод будет 6 - 3 раза 5 - 2 раза 12,2,243 - 1 раз. Ну и конечно - никакого использования коллекций. Только массивы. Задача то вроде простая, наиболее примитивно - берем двумерный массив и т.д. Но может есть какое то красивое решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 03:14 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Задача слишком простая. Решений масса. А искать оптимальный/красивый код просто неинтересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 05:25 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
982183, напишите одно. Если простая задача значит в 10-15 минут уложитесь. Только не блоксхему а рабочий код. Если лень писать, неохота думать - значит задача не заинтересовала. А вы подумайте минуты 3 - вдруг заинтересует. . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 06:16 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300, Решение при помощи linkedhadhmap: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. С уважением, Валентин ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 08:47 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Все формальности соблюдены: красиво и коллекции не используются. На все ушло 3 минуты :) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. order by cnt desc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 09:12 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 09:16 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
myauchaВсе формальности соблюдены: красиво и коллекции не используются. На все ушло 3 минуты :) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. order by cnt desc только, наверное, надо не таблицу создавать, а... забыл как там называется, что-то типа временной таблицы, которая в бд потом не сохранится :) И, кстати, не хорошо, что id повторяются) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 09:17 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Ну вот, пока писал, уже ответили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 09:18 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Nixicтолько, наверное, надо не таблицу создавать, а... забыл как там называется, что-то типа временной таблицы, которая в бд потом не сохранится :) И, кстати, не хорошо, что id повторяются) Лучше?! :) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 09:43 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Только массивы. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 09:59 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300Задача то вроде простая, наиболее примитивно - берем двумерный массив и т.д. Но может есть какое то красивое решение? Чем тебе двумерный массив то поможет? Хочешь красиво жить - пожалуйста. :) Есть у тебя массив на n элементов. 1.Отводишь значит массив размерностью 2^n+1 c объектами (значение, количество). 2.Берешь число из первого массива. Смотришь по середине массива, пусто - добавляешь новый объект со значением из первого массива и количеством 1. Не пусто проверяешь значение. Равно - счетчик увеличиваем, больше идем направо, меньше налево (повторяем с серединой половины массива те же действия). 3.Пройдя весь исходный массив делаем тоже самое с полученным массивом (еще один 2^n+1 пробегаем по непустым (начиная с середины нефиг 2^n сложность то плодить), но в этот раз сравниваем по количеству повторений и больше налево). 4.Пробегаем по полученному массиву и печатаем значения с повторениями. P.S. На самом деле все гораздо проще:) Arrays.sort() - после чего подсчет количества тривиален. После чего еще один sort (не забыть сделать правильный Comparator). Можно нести преподу. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 10:27 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
авторкрасивое решение Уйти в бизнес)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 10:32 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Valentin Kolesnikov, хэшмап то конечно. Но тогда на самом деле слишком просто. Но с помощью только массивов. Так же интересней) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 10:35 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
myaucha, отлично) Только тут же форум по Java) ну и какое то не универсальное у вас решение. Если массив 10К элементов - кода будет многовато ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 10:37 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
982183, я не написал в условии но подразумевается что используем только Java. И только массивы. Никаких коллекций, не дай бог фреймворков и даже Arrays.sort(). Вы спросите - "дык нахрена ж так тр@хаться если есть уже готовые средства???" Так то да , в том то и дело - спортивный интерес. Задачка то простая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 10:40 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Arrays.sort() то понятно. Но его использовать нельзя) Только ваш код. А то можно и хэшмап залепить и все просто. А насчет использования 2 в степени n...Ээээмм а если (как это бывает) исходный массив из 1000 элементов? Или больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 10:46 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Zenia, респект! Первый кто выложил попытку решения. Но что то не работает. На исходной выборке результат правильный. Но если добавить в массив новые данные то все ломается. Попробуйте к примеру просто входящий массив удвоить или утроить (просто добавьте те же числа). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:04 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300Сергей Арсеньев, Arrays.sort() то понятно. Но его использовать нельзя) Только ваш код. Обыграть местных в эту игру нельзя потому, что всегда оказывается правило, про которое Вы раньше не знали. Чем простите Arrays.sort отличается от операций больше,меньше,равно? Он точно так же вшит в платформу. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:05 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, хорошо) Возражение принимается. Arrays.sort() используйте на здоровье. Но знаете что? Он вам тут мало поможет. Скажем, получили вы массив с элементами и массив с их встречаемостями. Каждому элементу в одном массиве соответствует элемент в другом. Что у вас будет после того как вы отсортируете один из массивов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:22 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Ну, в общем, как-то так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:31 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
select un, count(un) as cnt from unnest(array[12,2,5,6,6,243,5,6]) un group by 1 order by 1, 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:35 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:36 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Zenia, работает) Ну вот скажите - задача на самом деле посложнее чем кажется на первый взгляд. Ну и в 15 минут тут так просто не уложишься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:43 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
lleming, на java можете? Без использования коллекций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:45 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Мне самому задача тем и показалась интересной, что формулировка простая и кажется что можно решить за 5-10 минут. Легко посчитать во втором массиве частоту встречаемости для каждого элемента. Легко вывести ответ сортируя не по частоте встречаемости а по элементам (достаточно просто предварительно отсортировать исходный массив перед подсчетом количества встречаемостей). Но отсортировать по частоте уже сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:51 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
lleming, тогда уж как минимум order by 2, 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:53 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300Zenia, работает) Ну вот скажите - задача на самом деле посложнее чем кажется на первый взгляд. Ну и в 15 минут тут так просто не уложишься Не знаю, просто вспомнил эту задачу со школы. Раньше быстро решал, сейчас по чуть-чуть мозг костенеет .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:55 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Map<Integer, Long> result = Stream .of(12,2,5,6,6,243,5,6) .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); System.out.println(result); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 12:03 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300lleming, тогда уж как минимум order by 2, 1 как вам будет угодно. мне более натуральных казался порядок чисел а не частота. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 12:04 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 12:04 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Если диапазон значений известен и положительный, то можно создать массив размера этого диапазона и во втором массиве отмечать количество встречаний, ну а потом отсортировать второй массив и вывести на экран ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 12:10 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300982183, я не написал в условии но подразумевается что используем только Java. И только массивы. Вот так всегда. То пуговички перламутровые, то коня с крылышками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 13:28 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
questionerЕсли диапазон значений известен и положительный, то можно создать массив размера этого диапазона и во втором массиве отмечать количество встречаний, ну а потом отсортировать второй массив и вывести на экран А зачем тебе диапазон? Заведи двумерный массив, или два одномерных. В одной строке ставь значение, во втором количество попаданий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 13:35 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
982183, с использованием мапов задача решается в несколько строк как это продемонстрировали несколько человек выше. В этом и интерес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 15:45 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
questioner, отсортируете второй массив. А первый? Вам надо вывести пару значений - число+частота его появления отсортированные по частоте появления. Почему именно по частоте-потому что вывод в сортировке по самим числам делается элементарно- предварительной сортировкой исходного массива и затем уже подсчетом частоты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 15:48 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 16:19 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 17:14 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300 Но отсортировать по частоте уже сложнее. Подсчитать встречаемость это тривиально. (У отсортированного массива и того проще не надо взад вперед бегать, но это была шутка). Отсортировать по любому полю объекта еще проще, см. выше про Comparator и sort. Забавно, это как-то так не делайте так в домашних условиях :) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 17:40 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Зря беспричинно оптимизировать начал, на самом деле так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 17:47 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300отсортируете именно по частоте-потому что вывод в сортировке по самим числам делается элементарно- предварительной сортировкой исходного массива и затем уже подсчетом частоты Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 18:12 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
lleming,это работает, но тут все пытаютсякак то без мап обойтись) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 18:43 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, да, вот так работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 18:46 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Немного дикий вариант, но почему бы и нет: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 20:46 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
напишите на лямбдах )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 21:52 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
c3p0Немного дикий вариант, но почему бы и нет: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. По мне так отличный вариант, гораздо меньше итераций по циклу, чем в примерах до этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 22:18 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
pgm300982183, я не написал в условии но подразумевается что используем только Java. И только массивы. Вы написали на сайте SQL.RU Что является более сильным приоритетом. Никто не мешает взять массив и загнать его в таблицу. Как никто не мешает использовать SQL в Java ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 02:57 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
c3p0Немного дикий вариант, но почему бы и нет: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Потому что метод сортировки пузырьком тут явно не в дугу, а то, что остается - написано неправильно, хотя идея хорошая: - "Objects.hashCode" вот это надо выкинуть и заменить на Math.abs(n) % a.length, чтобы нормально учитывались и отрицательные значения - ну и хэш-код сам по себе может давать одинаковое значение, что у вас не учитывается в алгоритме; замените, например, исходный массив на int[] a = {8, 16, 12, 2, 5, 6, 6, 243}; и 8 с 16 у вас посчитаются дважды, так как получат одинаковый хеш-код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 10:06 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
Вариант решения 19641739 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 12:36 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
982183questionerЕсли диапазон значений известен и положительный, то можно создать массив размера этого диапазона и во втором массиве отмечать количество встречаний, ну а потом отсортировать второй массив и вывести на экран А зачем тебе диапазон? Заведи двумерный массив, или два одномерных. В одной строке ставь значение, во втором количество попаданий. чтобы по индексу иметь быстрый доступ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 13:11 |
|
||
|
Интересная задачка про массивы
|
|||
|---|---|---|---|
|
#18+
adverte, я ее в одной книжке нашел. Наверное сдуто оттуда. Хотя на самом деле задача довольно типовая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 13:29 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123220]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
108ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 473ms |

| 0 / 0 |
