Full stack dev
61 subscribers
356 photos
50 videos
4 files
99 links
"Full Stack Dev & Computer Science" – Канал для разработчиков, которые хотят
расширить свои знания в Full Stack и углубиться в основы и новейшие тренды Computer Science.
Здесь вы найдете материалы по frontend и backend разработке, работе с базами данных,
Download Telegram
🟢Реализация Графа (Graph) на Java (Pt 1)

Что такое Граф(Graph) ?

📚Давайте начнём с того, что граф - это структура данных
которая является множество обЪектов называемые Узлами(Node), которые могут быть
соединены между собой с помощью Рёбер(Edge), на картинки видно наглядно.


#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
🟢Реализация Графа(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.
И LinkedHashMap<Node, Edge> которая хранит в себе
key: Node; value: Edge.


#algorithms #java
Forwarded from Timur
Задача для « 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
👍3🔥1
Forwarded from Timur
👍3
👍3🔥1
Forwarded from Timur
Задачка по Go

📚Условие:
Напишите функцию, которая принимает список
email-адресов и возвращает уникальные домены
из этого списка. Домен — это часть адреса после символа
@.

🔍Нюанс:
Если эту задачу решать на Golang, то структуру данных Set придётся
самому писать (что я и сделал).


💡Решение:
Сверху есть картинка кода реализации структуры данных Set.
И так же есть картинка с решением задачи.


👁‍🗨Пример:

« ["user1@example.com", "user2@test.com", "user3@example.com", "user4@sample.com"]
» {"example.com", "test.com", "sample.com"}

#task #go
В самом деле 🧐
#memes