Forwarded from Timur
✅Задача для Java
📚Дан массив целых чисел
и целочисленный
📚Напишите функцию для поиска target в
то верните его индекс. В противном случае верните значение -1.
⚙️Необходимо написать алгоритм со сложностью выполнения O(log n).
👁🗨Пример №1:
«
» 4
👁🗨Пример №2:
«
» -1
#task #java
«Binary Search»📚Дан массив целых чисел
nums, отсортированный в порядке возрастания, и целочисленный
target.📚Напишите функцию для поиска target в
nums. Если target существует, то верните его индекс. В противном случае верните значение -1.
⚙️Необходимо написать алгоритм со сложностью выполнения O(log n).
👁🗨Пример №1:
«
nums = [-1,0,3,5,9,12], target = 9» 4
👁🗨Пример №2:
«
nums = [-1,0,3,5,9,12], target = 2» -1
#task #java
✅Структура данных
⚙️Коротко о коде:
———————————
💡Поле
Если длина stack.length >
———————————
💡Метод
———————————
💡Метод
данных(array) и по этой причине там пересоздаётся массив.
———————————
💡Метод
этот элемент (По прицепу stack).
———————————
💡Метод
———————————
💡Метод
———————————
💡Метод
———————————
💡Метод
———————————
👁🗨Что такое stack: читать
#algorithms #java
Stack написанная на Java ⚙️Коротко о коде:
———————————
💡Поле
limitSize - это поле(переменная) отвечает за переполнения stack. Если длина stack.length >
limitSize то это не допустимо.———————————
💡Метод
isLimitSize - отвечает за проверку не переполнен ли stack. ———————————
💡Метод
push - добавляет в вершину stack. При этом я использовал примитивный тип данных(array) и по этой причине там пересоздаётся массив.
———————————
💡Метод
pop - удаляет вершину stack и возвращает этот элемент (По прицепу stack).
———————————
💡Метод
peek - Возвращает без удаления вершину stack.———————————
💡Метод
size - Возвращает размер stack.———————————
💡Метод
isEmpty - Проверяет пуст ли stack.———————————
💡Метод
toString - Возвращает stack в виде Type String.———————————
👁🗨Что такое stack: читать
#algorithms #java
👍1
Forwarded from Timur
✅Реализация структуры данных
⚙️Коротко о коде:
💡
💡
💡
💡
💡
👁🗨Что такое очередь: читать
#algorithms #java
Queue(Очереди) на Java ⚙️Коротко о коде:
💡
void enqueue(int el) - добавление элемента в очередь 💡
int dequeue() - удаление из queue и возврат элемента💡
int peek() - получение первого элемента в очереди 💡
boolean isEmpty() - пуст ли queue true/false 💡
int size() - размер queue👁🗨Что такое очередь: читать
#algorithms #java
Forwarded from Timur
✅Задача по Java: Проверка баланса скобок в строке
📚Напишите функцию, которая проверяет, сбалансированы ли
круглые, фигурные и квадратные скобки в заданной строке.
Сбалансированность означает, что каждая открывающая скобка
имеет соответствующую закрывающую, и скобки вложены корректно.
👁🗨Пример №1:
«
» true
👁🗨Пример №2:
«
» false
#task #java
📚Напишите функцию, которая проверяет, сбалансированы ли
круглые, фигурные и квадратные скобки в заданной строке.
Сбалансированность означает, что каждая открывающая скобка
имеет соответствующую закрывающую, и скобки вложены корректно.
👁🗨Пример №1:
«
"{[()()]}"» true
👁🗨Пример №2:
«
"{[(])}"» false
#task #java
Forwarded from Timur
✅Задача для Java:
📚Реализуйте функцию, которая складывает
два числа и возвращает их сумму в двоичном формате.
Преобразование может быть выполнено до или после сложения.
⚙️Возвращаемое двоичное число должно быть
👁🗨Пример:
«
»
(1 + 1 = 2 in decimal or 10 in binary)
«
»
(5 + 9 = 14 in decimal or 1110 in binary)
#task #java
📚Реализуйте функцию, которая складывает
два числа и возвращает их сумму в двоичном формате.
Преобразование может быть выполнено до или после сложения.
⚙️Возвращаемое двоичное число должно быть
String.👁🗨Пример:
«
a = 1, b = 1 »
"10" (1 + 1 = 2 in decimal or 10 in binary)
«
a = 5, b = 9 »
"1110" (5 + 9 = 14 in decimal or 1110 in binary)
#task #java
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