Forwarded from Timur
✅Задача по
📚Напишите метод
где ключи — это слова из строки, а значения — количество их
вхождений, при этом сохранив порядок элементов.
Игнорируйте регистр и удаляйте знаки препинания.
👁🗨Пример №1:
«
» {hello=2, world=1, java=1}
👁🗨Пример №2:
«
» {its=1, simple=1, test=2, for=1}
👁🗨Пример №3:
«
» {1=1, 2=1, 3=2, here=1, number=1}
#task #java
Java: Подсчёт частоты слов в строке📚Напишите метод
countWordFrequency(), который принимает строку и возвращает Map, где ключи — это слова из строки, а значения — количество их
вхождений, при этом сохранив порядок элементов.
Игнорируйте регистр и удаляйте знаки препинания.
👁🗨Пример №1:
«
"Hello, world! Hello Java."» {hello=2, world=1, java=1}
👁🗨Пример №2:
«
"it's simple test for test."» {its=1, simple=1, test=2, for=1}
👁🗨Пример №3:
«
"1, 2, 3 here 3 number."» {1=1, 2=1, 3=2, here=1, number=1}
#task #java
🔥1
✅Реализация структуры данных
⚙️Короток о структуре:
Структура данных
себе содержит значение value например = 1 и левый(
и правый(
любым типом данных, но для простоты примера взял
же
вместе с кодом.
💡Итак всё начинается с корневой(root) node,
мы в коде создали обЪект TreeRoot и хранится он у нас
в переменной root, и заполнили его узлами(nodes),
на картинки всё наглядно, потом чтобы всё дерево
отрисовать в консоли для этого вызвали метод
#algorithms #java
"Дерево(Tree)" на Java ⚙️Короток о структуре:
Структура данных
"Дерево(Tree)" - это структура данных себе содержит значение value например = 1 и левый(
left) и правый(
right) ноды(node/branch) по сути value может быть любым типом данных, но для простоты примера взял
int, left и right это тоже структура данных Tree которая тоже имеет left и right узлы, но node left и right могут содержать в себе так же
null, это означает конец ветки дерева. Картинка как это можно представить выше вместе с кодом.
💡Итак всё начинается с корневой(root) node,
мы в коде создали обЪект TreeRoot и хранится он у нас
в переменной root, и заполнили его узлами(nodes),
на картинки всё наглядно, потом чтобы всё дерево
отрисовать в консоли для этого вызвали метод
printTree(
<корневая нода>,
<просто дополнительная срока>,
<мы отрисовываем дерево с лева на право по этой причине right это
конец отрисовки узла, а значит true это у нас right, а left это false>,
).#algorithms #java
🟢Реализация Графа
❓Что такое Граф(Graph) ?
📚Давайте начнём с того, что граф - это структура данных
которая является множество обЪектов называемые Узлами(Node), которые могут быть
соединены между собой с помощью Рёбер(Edge), на картинки видно наглядно.
#algorithms #java
(Graph) на Java (Pt 1)❓Что такое Граф(Graph) ?
📚Давайте начнём с того, что граф - это структура данных
которая является множество обЪектов называемые Узлами(Node), которые могут быть
соединены между собой с помощью Рёбер(Edge), на картинки видно наглядно.
#algorithms #java
🟢Реализация Графа (
❓Какие свойства есть у Графа(Graph) ?
📚Как мы выяснили ранее, граф состоит из Рёбер(Edge) и Узлами(Node),
их можно представить в виде двух мерного массива int[][] но это не эффективно,
По этой причине в основе понимания Графа(Graph), стоит понимать такие структуры данных
как Деревья(Tree), Хэш таблицы(HashMap), Связанный списки и ещё не из структур данных Рекурсии. Если эти
структуры данных вам понятны, значит и эта структура будет понятно.
💡Окей. Давайте разберём Graph на составные, а именно Edge и Node.
Node - это обЪект имеющий свойства
*
*
*
*
*
#algorithms #java
Graph) на Java (Pt 2)❓Какие свойства есть у Графа(Graph) ?
📚Как мы выяснили ранее, граф состоит из Рёбер(Edge) и Узлами(Node),
их можно представить в виде двух мерного массива int[][] но это не эффективно,
По этой причине в основе понимания Графа(Graph), стоит понимать такие структуры данных
как Деревья(Tree), Хэш таблицы(HashMap), Связанный списки и ещё не из структур данных Рекурсии. Если эти
структуры данных вам понятны, значит и эта структура будет понятно.
💡Окей. Давайте разберём Graph на составные, а именно Edge и Node.
Node - это обЪект имеющий свойства
*
value(может быть любым типом данных)*
edges(все узлы которые есть у node)*
parents(все вершины которые ведут к текущей node, то есть родители node )Edge - это обЪект имеющий свойства *
adjacentNode - соседний узел *
weight - вес ребра(Каждое ребро имеет вес, в нашем примере для простоты все веса всех ребер равны 1)#algorithms #java
🟢Реализация Графа(
❓Что такое Ребро(Edge) ?
💡Окей. Мы с вами уже разобрали какими свойствами обладаем граф,
теперь поговорим в отдельности о Edge.
есть ребра однонаправленные например:
двунаправленные например:
⚙️Поговорим теперь о коде:
указывающий на
❓Что такое Узел(Node) ?
💡Окей. Давай теперь поговорим о node(Узел).
тип данных который нам нужен. Так же мы
имеем
И L
#algorithms #java
Graph) на Java (Pt 3)❓Что такое Ребро(Edge) ?
💡Окей. Мы с вами уже разобрали какими свойствами обладаем граф,
теперь поговорим в отдельности о Edge.
Edge - это ребро как мы уже поняли, каждое ребро имеет вес и направление,есть ребра однонаправленные например:
Node -Edge--> Node; и двунаправленные например:
Node <--Edge--> Node⚙️Поговорим теперь о коде:
Edge - это класс имеющий в себе поля adjacentNodeуказывающий на
node и weight это вес самого узла.❓Что такое Узел(Node) ?
💡Окей. Давай теперь поговорим о node(Узел).
Node является соединяющей частью Ребер(Edge).Node часто имеет знамение(value), хранящие любой тип данных который нам нужен. Так же мы
имеем
LinkedHashSet<Edge> который хранит в себе все Edges.И L
inkedHashMap<Node, Edge> которая хранит в себе key: Node; value: Edge. #algorithms #java
Forwarded from Timur
✅Задача для «
У нас есть method
Нужно найти число
возрастанию. И в итоги вернуть
иначе
👁🗨Пример №1:
«
»
👁🗨Пример №2:
«
»
💡Решение:
В начел идёт проверка матрицы, если проверка не прошла
успешно return false. Инициализируем m, n, i, j.
m - длина row, n - длина col. i, j - это указатели.
Обход начинаем с верхнего правого угла и до конца matrix.
По этой причине мы будем если matrix[i][j] > target то j-- иначе i++ .
📉Сложность алгоритма в решении:
⌚️Время:
💾Память:
#task #java
searchMatrix » Java У нас есть method
searchMatrix(), в качестве параметров принимаем int[][] matrix иint target: searchMatrix(int[][] matrix, int target).Нужно найти число
target в matrix, при этом у нас по m, n matrix отсортированы по возрастанию. И в итоги вернуть
return (boolean) если есть число в matrix то true,иначе
false. 👁🗨Пример №1:
«
new int[][] {
{1, 2, 3, 4, 5},
{2, 3, 4, 5, 6},
{3, 4, 5, 6, 7}
}, 5»
true👁🗨Пример №2:
«
new int[][] {
{1, 2, 3, 4, 5},
{2, 3, 4, 5, 6},
{3, 4, 5, 6, 7}
}, 100»
false💡Решение:
успешно return false. Инициализируем m, n, i, j.
m - длина row, n - длина col. i, j - это указатели.
Обход начинаем с верхнего правого угла и до конца matrix.
По этой причине мы будем если matrix[i][j] > target то j-- иначе i++ .
📉Сложность алгоритма в решении:
⌚️Время:
O(m + n)💾Память:
O(1)#task #java
Forwarded from Timur
✅Задача «
📚Дано целое число
пока в результате не останется только одна цифра, и верните ее.
👁🗨Пример 1:
«
»
👁🗨Пример 2:
«
»
💡Решение:
В решении используется чистая математика,
и скажу честно я не смог решить это задачу
за O(1) самостоятельно. Меня довольно сильно удивило
такое короткое и лаконичное решение задачи,
хотя казалось бы что надо использовать цикл/рекурсию
для решения(что я по началу и сделал ) но понял что сложность
алгоритма в таком случаи было бы O(n) или что ещё хуже O(n**2).
В задачи было сказано что её можно решить за O(1), что меня естественно удивило.
И про гуглив решение нашёл как решить эту задачу за время O(1).
📉Сложность:
⌚️Время:
💾Память:
#algorithms #java
Add Digits»📚Дано целое число
num, многократно складывайте все его цифры, пока в результате не останется только одна цифра, и верните ее.
👁🗨Пример 1:
«
num = 38»
2👁🗨Пример 2:
«
num = 1701»
9💡Решение:
и скажу честно я не смог решить это задачу
за O(1) самостоятельно. Меня довольно сильно удивило
такое короткое и лаконичное решение задачи,
хотя казалось бы что надо использовать цикл/рекурсию
для решения(что я по началу и сделал ) но понял что сложность
алгоритма в таком случаи было бы O(n) или что ещё хуже O(n**2).
В задачи было сказано что её можно решить за O(1), что меня естественно удивило.
И про гуглив решение нашёл как решить эту задачу за время O(1).
📉Сложность:
⌚️Время:
O(1)💾Память:
O(1)#algorithms #java
Forwarded from Timur
✅Микросервисы на
📚В статье дается практическое руководство по разработке микросервисов на Java, начиная с базовых принципов и архитектуры.
📗Автор объясняет, как правильно разделять приложение на сервисы, организовывать их взаимодействие и тестирование, а также рассматривает ключевые инструменты и подходы к развертыванию.
📰Читать: тут
#articles #backend #java
Java: практическое руководство📚В статье дается практическое руководство по разработке микросервисов на Java, начиная с базовых принципов и архитектуры.
📗Автор объясняет, как правильно разделять приложение на сервисы, организовывать их взаимодействие и тестирование, а также рассматривает ключевые инструменты и подходы к развертыванию.
📰Читать: тут
#articles #backend #java
Forwarded from Timur
✅Задача для
📚У нас есть метод
в нем рассортированы по возрастанию.
Нужно найти 2 числа, которые в сумме дают
если не нашлось ответа, то
👁🗨Пример №1:
«
»
👁🗨Пример №2:
«
»
👁🗨Пример №3:
«
»
👁🗨Пример №4:
«
»
💡Решение:
Я использовал при решении задачи алгоритм двух указателей.
📉Сложность алгоритма:
⌚️Время:
💾Память:
#task #java
Java 📚У нас есть метод
twoSum(int[] nums, int target) и массив int[] nums, числа в нем рассортированы по возрастанию.
Нужно найти 2 числа, которые в сумме дают
int target и return new int[]{ num1, num2 },если не нашлось ответа, то
return new int[]{0}👁🗨Пример №1:
«
nums = new int[]{-3, 0, 1, 3, 4}, target = 5»
[1, 4]👁🗨Пример №2:
«
nums = new int[]{1, 2, 3, 4, 5}, target = 9»
[4, 5]👁🗨Пример №3:
«
nums = new int[]{-5, -3, -1, 0, 1, 3, 5}, target = -8»
[-5, -3] 👁🗨Пример №4:
«
nums = new int[]{1, 2, 3, 4, 5}, target = 50»
[0] 💡Решение:
📉Сложность алгоритма:
⌚️Время:
O(n)💾Память:
O(1)#task #java
Forwarded from Timur
✅Задача для
⚙️Даны две строки
если
в противном случае.
👁🗨Пример 1:
«
»
👁🗨Пример 2:
«
»
Как работает решение:
Первым действием мы проверяем если s or t будут
пустыми мы возвращаем false, так же проверяем чтобы
длина s.length() and t.length были равны, иначе будем возвращать
false. Дальше мы работаем с типами, а именно конвертируем String to char[],
чтобы можно было следующим действием отсортировать оба char[], что
является ещё одним действием. И в конце мы сравниваем два массива.
Почему такая сложность:
Время: конвертация String to char[] даёт сложность O(n).
Сортировка стоит O(log n). И в сумме получаем O(n log n).
Память: из-за хранения массивов для строк. В итоги O(n)
📉Сложность алгоритма в решении:
⌚️Время:
💡Память:
#task #java
Java «Valid Anagram»⚙️Даны две строки
s и t, верните true, если
t является анаграммой s, и false в противном случае.
👁🗨Пример 1:
«
s = "anagram", t = "nagaram"»
true👁🗨Пример 2:
«
s = "rat", t = "car"»
falseПервым действием мы проверяем если s or t будут
пустыми мы возвращаем false, так же проверяем чтобы
длина s.length() and t.length были равны, иначе будем возвращать
false. Дальше мы работаем с типами, а именно конвертируем String to char[],
чтобы можно было следующим действием отсортировать оба char[], что
является ещё одним действием. И в конце мы сравниваем два массива.
Время: конвертация String to char[] даёт сложность O(n).
Сортировка стоит O(log n). И в сумме получаем O(n log n).
Память: из-за хранения массивов для строк. В итоги O(n)
📉Сложность алгоритма в решении:
⌚️Время:
O(n log n)💡Память:
O(n) #task #java
Forwarded from Timur
✅Задача для
📚Создайте функцию, которая возвращает
сумму двух наименьших положительных
чисел, заданных в массиве минимум из 4
положительных целых чисел. Никакие числа
с плавающей точкой или неположительные целые
числа передаваться не будут.
👁🗨Пример:
«
»
«
»
#task #java
Java:📚Создайте функцию, которая возвращает
сумму двух наименьших положительных
чисел, заданных в массиве минимум из 4
положительных целых чисел. Никакие числа
с плавающей точкой или неположительные целые
числа передаваться не будут.
👁🗨Пример:
«
[19, 5, 42, 2, 77]»
7«
[10, 343445353, 3453445, 3453545353453] »
3453455#task #java
✅Задача на Java
📚Условие задачи: дан массив астероидов (каждое значение - вес астероида, а знак - направление движения). Каждый из астероидов двигается с одинаковой скоростью.
⚙️При столкновени двух астероидов, асторид с меньшим весов уничтожается (у целого астероида вес остается неизменным после столкновения).
🖨Вывести надо результирующий массив после всевозможных столкновений.
📑Пример:
Ввод:
Вывод:
Объяснение: 3-ий астероид сталкивается со 2-ым и уничтожается.
Ввод:
Вывод:
#task #java
📚Условие задачи: дан массив астероидов (каждое значение - вес астероида, а знак - направление движения). Каждый из астероидов двигается с одинаковой скоростью.
⚙️При столкновени двух астероидов, асторид с меньшим весов уничтожается (у целого астероида вес остается неизменным после столкновения).
🖨Вывести надо результирующий массив после всевозможных столкновений.
📑Пример:
Ввод:
asteroids = [5,10,-5] Вывод:
[5,10]Объяснение: 3-ий астероид сталкивается со 2-ым и уничтожается.
Ввод:
asteroids = [8,-8]Вывод:
[ ]#task #java
👍1
Forwarded from Timur
✅Задача для Java
📚Дано целое число num. Вы можете поменять в нём местами
две цифры один раз, чтобы получить максимальное значение.
⚙️Нужно вернуть максимальное значение, которое вы можете получить.
👁🗨Пример №1:
«
» 7236
💡Пояснение: Поменяли 2 и 7 местами.
👁🗨Пример №2:
«
» 9973
💡Пояснение: Ничего местами не поменяли.
👁🗨Пример №3:
«
» 7234561
💡Пояснение: Все цифры поменяли.
#task #java
«Maximum Swap»📚Дано целое число num. Вы можете поменять в нём местами
две цифры один раз, чтобы получить максимальное значение.
⚙️Нужно вернуть максимальное значение, которое вы можете получить.
👁🗨Пример №1:
«
2736» 7236
💡Пояснение: Поменяли 2 и 7 местами.
👁🗨Пример №2:
«
9973» 9973
💡Пояснение: Ничего местами не поменяли.
👁🗨Пример №3:
«
1234567» 7234561
💡Пояснение: Все цифры поменяли.
#task #java
Forwarded from Timur
✅Задача по Java: Удаление дубликатов из списка с сохранением порядка
📚Напишите метод
возвращает новый список, содержащий только уникальные
строки, сохраняя их порядок появления.
👁🗨Пример №1:
«
» [apple, banana, orange]
👁🗨Пример №2:
«
» [Timur, Alex, Max]
👁🗨Пример №3:
»
« [JS, Java, Python]
#task #java
📚Напишите метод
removeDuplicates, который принимает список строк и возвращает новый список, содержащий только уникальные
строки, сохраняя их порядок появления.
👁🗨Пример №1:
«
List.of("apple", "banana", "apple", "orange", "banana")» [apple, banana, orange]
👁🗨Пример №2:
«
List.of("Timur", "Alex", "Max", "Alex", "Max")» [Timur, Alex, Max]
👁🗨Пример №3:
»
List.of("JS","Java", "JS", "JS", "Python")« [JS, Java, Python]
#task #java
✅Кодирование и декодирование списка строк
📚Условие:
Необходимо разработать алгоритм кодирования
списка строк в одну строку. Закодированная
строка будет отправлена по сети и затем декодирована
обратно в исходный список строк.
Необходимо реализовать функции encode и decode.
👁🗨Примеры:
⚙️Пример №1
«
»
⚙️Пример №2
«
»
#task #java
📚Условие:
Необходимо разработать алгоритм кодирования
списка строк в одну строку. Закодированная
строка будет отправлена по сети и затем декодирована
обратно в исходный список строк.
Необходимо реализовать функции encode и decode.
👁🗨Примеры:
⚙️Пример №1
«
["apple", "banana", "cherry"]»
"a4b6c5applebananacherry"⚙️Пример №2
«
["cat", "dog", "bird", "fish"]»
"c3d3b4f4catdogbirdfish"#task #java