✅Реализация структуры данных
⚙️Короток о структуре:
Структура данных
себе содержит значение 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
✅Задачка по Go
📚Условие:
Напишите функцию, которая принимает список
из этого списка. Домен — это часть адреса после символа
🔍Нюанс:
Если эту задачу решать на
самому писать (что я и сделал).
💡Решение:
Сверху есть картинка кода реализации структуры данных Set.
И так же есть картинка с решением задачи.
👁🗨Пример:
«
»
#task #go
📚Условие:
Напишите функцию, которая принимает список
email-адресов и возвращает уникальные домены из этого списка. Домен — это часть адреса после символа
@.🔍Нюанс:
Если эту задачу решать на
Golang, то структуру данных Set придётсясамому писать (что я и сделал).
💡Решение:
И так же есть картинка с решением задачи.
👁🗨Пример:
«
["user1@example.com", "user2@test.com", "user3@example.com", "user4@sample.com"]»
{"example.com", "test.com", "sample.com"}#task #go