🦀 Rust Journey 🦀
892 subscribers
52 photos
2 videos
1 file
240 links
Наше коммьюнити объединяет как новичков, так и опытных разработчиков, готовых поделиться своими знаниями и опытом. Здесь вы найдете обучающие материалы, обсуждения новейших тенденций в Rust и многое другое.

по всем вопросам: @denis_sukhoverkhov
Download Telegram
🧩 LeetCode Daily

Медиум дейли с точки зрения алгоритма, а вот на расте это достточно не простой дейлик если ты новичек в языке.

Сложность с которой я столкнулся - это реализация LinkedList на rust. Пришлось вспоминать смартпоинтер Box, Option.as_ref, ref, оператор ?, ссылки указатели. Понял что нужно глубже это закрепить.

- Задача: 19. Remove Nth Node From End of List

- Уровень сложности: Medium.

🚀 Мое Решение: github (+ добавил хэлпер чтобы юниттесты было легко писать )

#leetcode #Rust #medium #LinkedList

Rust Journey
🧩 LeetCode Daily

Привет, решил через 2 поинтера. Стандартный паттер решения подобных задач.

Интересно посмотреть на скорость выполнения одного и того же алгоритма на трех языках Rust, Go, Python.

- Задача: 948. Bag of Tokens

- Уровень сложности: Medium.

🚀 Мое Решение: github

#leetcode #Rust #medium

Rust Journey
🧩 Опубликовал свое решение на LeetCode

Поддержите лайками. 😉

Вот пост - Rust solution (fast and slow pointers) plus helpers for creating linked list by vector

Зачем я опубликовал решение?

Потому что для сегодняшней задачи решение нельзя засабмитить на Rust. Бывает и такое. Возможно команда литкода, со временем добавит задачу для Rust.

- Задача: 141. Linked List Cycle

- Уровень сложности: Easy. (но в языке Rust как мне кажется задача тянет на медиум)

🚀 Мое Решение: github

Создал реквест на добавление языка в литкоде - https://github.com/LeetCode-Feedback/LeetCode-Feedback/issues/21065

#leetcode #Rust #Easy

Rust Journey
🧩 LeetCode Daily

Простой субботний дейли таск. Можно использовать хешмап или два указателя для решения задачи. Я бы рекомендовал подход через два указателя, потому что так НЕ выделяется дополнительная память O(n)

- Задача: 2540. Minimum Common Value

- Уровень сложности: Easy.

🚀 Мое Решение: github

#leetcode #Rust #easy

Rust Journey
🧩 LeetCode Daily

Решил задачу через хэшмап и сортировку ключей словаря.

Работает очень быстро)

- Задача: 791. Custom Sort String

- Уровень сложности: Medium.

🚀 Мое Решение: github

#leetcode #Rust #Medium

Rust Journey
🧩 LeetCode Daily

Решил а потом уже понял что можно было оптимальнее. Как думаете что можно оптимизировать?

- Задача: 2485. Find the Pivot Integer

- Уровень сложности: Easy.

🚀 Мое Решение: github

#leetcode #Rust #Easy

Rust Journey
🧩 LeetCode Daily

Решение получилось супер эффективным и простым. Во-первых я не использовал бинарный поиск и не старался сделать in-place.

- Задача: 57. Insert Interval

- Уровень сложности: Medium.

🚀 Мое Решение: github

#leetcode #Rust #Medium

Rust Journey
🧩 LeetCode Daily

Применил сортировку и нашел пересечения интервалов, их свернул так что границы определялись узкой зоной пересечения. Ответ равен количеству таких интервалов.

- Задача: 452. Minimum Number of Arrows to Burst Balloons

- Уровень сложности: Medium.

🚀 Мое Решение: github

#leetcode #Rust #Medium

Rust Journey
🧩 LeetCode Daily

Дейлик поможет вспомнить такие структуры данных как: куча(BinaryHeap), словарь(HashMap), двойная очреедь(VecDeque).

Отличный разбор задачи у Neetcode - youtube

- Задача: 621. Task Scheduler

- Уровень сложности: Medium.

🚀 Мое Решение: github

#leetcode #Rust #Medium

Rust Journey
🧩 LeetCode Daily

Долго cидел с этой задачей, хотя алгоритм простой и понятный. Но вот реализация его на Rust очень не тривиальна для людей переходящих с других ЯП на Rust.

Большю часть времени приходилось бороться с тем что у нас не может быть более одной мутабельной ссылки одновременно. А так-же запутался с тем что тут Box а не RC.

- Задача: 1669. Merge In Between Linked Lists

- Уровень сложности: Medium.

🚀 Мое Решение: github

#leetcode #Rust #Medium

Rust Journey
🧩 LeetCode Daily

Очередной дейли на тему LinkedList, решение набросал на скорую руку. Оно получилось совсем неэффективным. На python такой-же алгоритм работает за 38ms а на Rust у меня получилось 620ms.

Кто может сказать почему?

- Задача: 206. Reverse Linked List

- Уровень сложности: Easy.

🚀 Мое Решение: github

#Leetcode #Rust #Easy

Rust Journey
🧩 LeetCode Daily

Не смог решить дейлик за O(1) space. Есть идеи как это сделать? Класический способ чере slow и fast поинтеры не получится, так как нельзя иметь более одной мутабельной ссылки на один объект в любой момент времени.

Нашел на литкоде решение которое просто не компилируется из-за двух мутабельных ссылок - пример.

А вот рабочее решение которое за O(1) space - пример. Автор хакнул rust restrictions просто методом поиска длины листа через подсчет узлов.

В целом мое решение достаточно эффективное. 😎

- Задача: 234. Palindrome Linked List

- Уровень сложности: Easy.

🚀 Мое Решение: github

#Leetcode #Rust #Easy

Rust Journey
🧩 LeetCode Daily

Привет, сегодня в дейлике нужно перествлять узлы в соответствие с правилом, причем нужно делать это inplace. Я, сразу не смог придумать как узлы переставить, но я быстро придумал как хакнуть задачу на литкоде - просто по сути поменяв сами val у каждой ноды.

Решение сделал через Vecdeq. Получилось суперэффективно, но наверное некорректно сравнивать.

Кто может сказать почему?

- Задача: 143. Reorder List

- Уровень сложности: Medium.

🚀 Мое Решение: github

#Leetcode #Rust #Medium

Rust Journey
🧩 LeetCode Daily

Привет, сам не догодался как решить за O(1) space c O(n) complexity. Рекомендую посмотреть разбор алгоритма от NeetCode. Как оказалось все очень даже просто и понятно. Кода мало получилось.

- Задача: 442. Find All Duplicates in an Array

- Уровень сложности: Medium.

🚀 Мое Решение: leetcode (проголосуйте плз 🤓)

#Leetcode #Rust #Medium

Rust Journey
🧩 LeetCode Daily

Алгоритм сегодняшнего дейлика похож на алго вчершний. Но сегодня задача хардовая, я сам минут 10 посидел подумал - не придумал ничего и посмотрел в Solution. Он для этой задачи открыт.

- Задача: 41. First Missing Positive

- Уровень сложности: Hard.

🚀 Мое Решение: github

#Leetcode #Rust #Hard

Rust Journey
Стоит ли решать литкод?

Привет, пришел к тому что литкод для меня стал как утренняя зарядка. То есть тратишь утром на него n-минут и так каждый день. Это сталновится привычкой.

Хорошо это или плохо?

Чтобы пройти алгоритмическую секцию - однозначно это хорошо. Но есть и другие секции, например знание языка, system design, английский язык если например говорить про иностранные компании. Soft skills в конце концов тоже никто не отменял.

В сухом остатке: продолжаю делать зарядку - голосуйте за мое решение.

Google system design interview: Design Spotify (with ex-Google EM) - для тех кому надоел литкод.

#Rust #leetcode

Rust Journey
🧩 LeetCode Daily

Хардовый дейлик. Не долго думая я сразу перешел к обзору алгоритма на канале NeetCode.

- Задача: 992. Subarrays with K Different Integers

- Уровень сложности: Hard.

В этот раз написл три реализации одного и того же алгоритма под три языка (Rust, Go, Python).

🚀 Мое Решение: Rust, Golang, Python

Как вам метрики скорости и потребляемой памяти? 🙂

#Leetcode #Rust #Hard

Rust Journey
🧩 LeetCode Daily

Опять хард, задачу можно решить вчерашним алгоритмом, но я нашел алгоритм O(1) space. Алгоритм очень понятно объясняют тут - youtube.

- Задача: 2444. Count Subarrays With Fixed Bounds

- Уровень сложности: Hard.

По традиции, алгоритм реализовал на трех языках (Rust, Go, Python).

🚀 Мое Решение: Rust, Golang, Python

И по традиции алго на расте работает эффективнее всего 🙂

#Leetcode #Rust #Hard

Rust Journey
🧩 LeetCode Daily

Привет, давйно не постил дейлики с Литкода. Сегодняшняя задача решается с помощью алгоритма - Monotonic Stack.

- Задача: 402. Remove K Digits

- Уровень сложности: Medium.

🚀 Мое Решение: leetcode (лайки приветствуются)

#Leetcode #Rust #Medium

Rust Journey