Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
1299. Replace Elements with Greatest Element on Right Side
➡️ Задача
1299. Replace Elements with Greatest Element on Right Side
➡️ Условие
➡️ Пример
➡️ Суть
➡️ Решение
➡️ HW?
1⃣ Начинаем с last = -1
2⃣ Двигаемся с конца массива к началу
3⃣ Для каждого элемента сохраняем его значение во временной переменной
5⃣ Заменяем текущий элемент arr[i] на last
5⃣ Обновляем last, если найден новый максимум
#leetcode
#easy
#algorithm
#two_pointers
💡 Channel | ✏ Chat
1299. Replace Elements with Greatest Element on Right Side
Дано arr[], надо заменить каждый элемент на максимальный из элементов справа. Последний элемент становится -1.
Input: arr = [17,18,5,4,6,1]
Output: [18,6,6,6,1,-1]
Explanation:
- index 0 --> the greatest element to the right of index 0 is index 1 (18).
- index 1 --> the greatest element to the right of index 1 is index 4 (6).
- index 2 --> the greatest element to the right of index 2 is index 4 (6).
- index 3 --> the greatest element to the right of index 3 is index 4 (6).
- index 4 --> the greatest element to the right of index 4 is index 5 (1).
- index 5 --> there are no elements to the right of index 5, so we put -1.
Наивный способ - для каждого элемента искать максимум справа O(n²). Это медленно для больших массивов.
Оптимальное решение - идём с конца массива и запоминаем максимум, обновляя его по ходу элементами.
public int[] ReplaceElements(int[] arr)
{
if (arr.Length == 1) return [-1];
if (arr.Length == 2) return [arr[1], -1];
var last = -1;
for (int i = arr.Length - 1; i >= 0; i--)
{
if (arr[i] > last)
(arr[i], last) = (last, arr[i]);
else
arr[i] = last;
}
return arr;
}
#leetcode
#easy
#algorithm
#two_pointers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👨💻1
Grok ≈ ChatGPT
Хочу поделиться с вами новостью
Grok - это AI, который помогаетлюдям программистам (ответ от Grok: ускорения научных открытий человечества)
Что может:
➖ Отвчечает быстро на технические вопросы
➖ Помнит предысторию
➖ Если у вас Telegram Premium, премиум-фичи Grok БЕСПЛАТНО, КАРЛ!
➖ Всё теперь можно делать прямо в Telegram (раньше можно было найти бота, но тут всё лучше и проще)
➖ Не умеет в рисовать, графики и всё такое, но может сделать код который сможет нарисовать [У тебя есть карта? Лучше! У меня рисунок карты!]
➖ Прекрасно распознаёт изображения
Минутка от GrokAI
ВОПРОС: какое сегодня число?
ОТВЕТ: Сегодня 20 октября 2023 года.
Бот: @GrokAI
#AI
#grok
💡 Channel | ✏ Chat
Хочу поделиться с вами новостью
@GrokAI
теперь в TelegramGrok - это AI, который помогает
Что может:
Минутка от GrokAI
ОТВЕТ: Сегодня 20 октября 2023 года.
Бот: @GrokAI
#AI
#grok
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6 2👨💻1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3 2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
3. Longest Substring Without Repeating Characters
➡ Задача
3. Longest Substring Without Repeating Characters
➡ Условие
➡ Пример
➡ Суть
➡ Решение
➡ HW?
1⃣ Обработка простых случаев
2⃣ Проход по строке с использованием правого указателя. Мы двигаем right (правый указатель), проходя по строке s.
3⃣ Проверка на повтор символа
Если s[right] уже есть в dict, значит символ повторяется. Берем сохраненный индекс index из dict[s[right]. Сдвигаем left, чтобы не было повторов: left = Math.Max(left, index + 1). Это предотвращает сдвиг left назад, если left уже ушел дальше повторного символа.
5⃣ Обновление словаря. Записываем в dict[s[right]] текущий индекс right — теперь этот символ встречается в позиции right.
5⃣ Обновление максимальной длины. Выбираем максимум между max и текущей длиной окна.
#leetcode
#medium
#algorithm
#sliding_window
💡 Channel | ✏ Chat
3. Longest Substring Without Repeating Characters
Given a string s, find the length of the longest substring without duplicate characters.
Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Наивный способ - перебирать все подстроки O(n²). Это медленно для больших массивов.
Оптимальное решение - использовать Sliding Windows и HashSet
public int LengthOfLongestSubstring(string s)
{
if(s.Length <= 1)
return s.Length;
var left = 0;
var max = 0;
var dict = new Dictionary<char, int>();
for (var right = 0; right < s.Length; right++)
{
if (dict.TryGetValue(s[right], out var index))
{
left = Math.Max(left, index + 1);
}
dict[s[right]] = right;
max = Math.Max(max, right - left + 1);
}
return max;
}
Если s[right] уже есть в dict, значит символ повторяется. Берем сохраненный индекс index из dict[s[right]. Сдвигаем left, чтобы не было повторов: left = Math.Max(left, index + 1). Это предотвращает сдвиг left назад, если left уже ушел дальше повторного символа.
#leetcode
#medium
#algorithm
#sliding_window
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👨💻2
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏1 1
This media is not supported in your browser
VIEW IN TELEGRAM
Sort vs. Rearrangement
Решал задачу "Sort Array by Parity"
Сначала подумал:
“Разделить, отсортировать, объединить” - звучит логично? Да.
Но... Памяти потребляется много.
А потом осенило:
Используй два указателя.
✅ Один дополнительный индекс
❌ Без списков
❌ Без сортировки
❌ Без лишней памяти
Было: O(n²) Стало: O(n)
Иногда перестановка лучше, чем сортировка 🥹
#leetcode
#sorting
#algorithm
#easy
#developer
💡 Channel | ✏ Chat
Решал задачу "Sort Array by Parity"
Сначала подумал:
“Разделить, отсортировать, объединить” - звучит логично? Да.
Но... Памяти потребляется много.
А потом осенило:
Используй два указателя.
✅ Один дополнительный индекс
❌ Без списков
❌ Без сортировки
❌ Без лишней памяти
Было: O(n²) Стало: O(n)
Иногда перестановка лучше, чем сортировка 🥹
#leetcode
#sorting
#algorithm
#easy
#developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
EF Core единым: как LINQ to DB спасает, когда EF уже не тянет
Есть отличное видео о
➡️ В чём EF Core не хорош?
Иногда страдает от медленной инициализации
Нет удобной поддержки bulk insert/update
Ограниченные возможности при сложных SQL-операциях
➡️ В чём linq2db хорош?
Так же не нужно создавать объект если хотите сделать просто update
просто SQL уровня UPDATE ... SET ... FROM ... WHERE ....
Вставка сотен тысяч строк в linq2db: PostgreSQL и метод COPY
Если у вас PostgreSQL и вы вставляете кучу строк — забудьте про AddRange и SaveChanges 🥹
Insert from select, merge и временные таблицы
LINQ to DB позволяет делать вещи, которые в EF либо невозможно, либо надо "танцевать с бубном"
Так же для MERGE можно использовать специальный DSL или выполнять кастомный SQL напрямую — и всё это в транзакции EF.
➡️ Что ещё интересного в linq2db?
- Использование разных isolation levels для тонкой настройки транзакций
- Обходить блокировки строк с помощью "skip locked"
- Почему EF тормозит из-за инициализации, а LINQ to DB — нет 🫠
- Как расширить LINQ to DB для PostgreSQL-специфичных фич (full-text search, @> и т.п.)
📝 Итого
У меня был опыт с linq2db, но довольно печальный. Во-первых небыло ещё chatgpt)) и практически нет документации. Тем не менее, если вы работаете с большими объемами данных, сложной бизнес-логикой и хотите контролировать SQL на выходе — присмотритесь к LINQ to DB. Это не просто "альтернатива", это — швейцарский нож для разработчика, уставшего от "магии" ORM.
Ссылка: YouTube
#EFCore
#LINQtoDB
#PostgreSQL
#dotnet
Есть отличное видео о
ORM
от Алексей Фадеев рассказал, как LINQ to DB (linq2db) может быть настоящим спасением, когда Entity Framework Core начинает тормозить — Привет от BULK операций и сложных условий обновления.Иногда страдает от медленной инициализации
Нет удобной поддержки bulk insert/update
Ограниченные возможности при сложных SQL-операциях
Так же не нужно создавать объект если хотите сделать просто update
просто SQL уровня UPDATE ... SET ... FROM ... WHERE ....
await db.Companies
.Where(c => c.Name == null)
.Set(c => c.Name, c => c.Director + "'s company")
.UpdateAsync();
Вставка сотен тысяч строк в linq2db: PostgreSQL и метод COPY
Если у вас PostgreSQL и вы вставляете кучу строк — забудьте про AddRange и SaveChanges 🥹
await db.BulkCopyAsync(new BulkCopyOptions
{
TableName = "Passengers",
KeepIdentity = true
}, passengersList);
Insert from select, merge и временные таблицы
LINQ to DB позволяет делать вещи, которые в EF либо невозможно, либо надо "танцевать с бубном"
Так же для MERGE можно использовать специальный DSL или выполнять кастомный SQL напрямую — и всё это в транзакции EF.
await db.Into(db.NewTable)
.Insert(
from o in db.OldTable
where o.IsActive
select new NewTable { Id = o.Id, Name = o.Name });
var sql = @"select * from tickets where departure_time > now()";
var result = await db.FromSql(sql).ToListAsync();
- Использование разных isolation levels для тонкой настройки транзакций
- Обходить блокировки строк с помощью "skip locked"
- Почему EF тормозит из-за инициализации, а LINQ to DB — нет 🫠
- Как расширить LINQ to DB для PostgreSQL-специфичных фич (full-text search, @> и т.п.)
У меня был опыт с linq2db, но довольно печальный. Во-первых небыло ещё chatgpt)) и практически нет документации. Тем не менее, если вы работаете с большими объемами данных, сложной бизнес-логикой и хотите контролировать SQL на выходе — присмотритесь к LINQ to DB. Это не просто "альтернатива", это — швейцарский нож для разработчика, уставшего от "магии" ORM.
Ссылка: YouTube
#EFCore
#LINQtoDB
#PostgreSQL
#dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5 2 1
This media is not supported in your browser
VIEW IN TELEGRAM
🪓 50 дней подряд решаю задачи на LeetCode
50-дневный стрик на LeetCode для меня было не просто. Это по сути значит, что я каждый день решал хотя бы одну задачу по алгоритмам и структурам данных. Иногда это было легко, иногда - совсем нет. Иногда — ночью, перед сном, иногда в 23:57 я пушил ответ. Но каждый день - стабильно.
➡️ Зачем это всё?
1. Набрать форму 😅.
Когда пишешь бэкенд или работаешь с продакшеном - алгоритмы быстро уходят из головы. Последний раз я решал задачи года полтора назад. И естественно ничего этого я уже и не помню). А они тренируют мышление, умение оптимизировать и видеть код на уровень глубже, не всегда конечно, но увеличивают кругозор и экспертизу.
2. Дисциплина.
Можно сранвить как спорт: это как быть в прайме своей формы или готовиться к соревнованиям, даже 20 минут в день дают мощный эффект, если делать стабильно.
3. Challenge самому себе.
Не ради рейтинга, ради алгоритмов. А ради внутреннего ощущения, что ты не стоишь на месте. И оттачиваешь своё ремесло🤓
4. Прокачка английского.
Понять что имеется ввиду тоже ещё тот челендж
Если давно хотел прокачаться в алгоритмах, начать легко: по одной задаче в день. Главное - регулярность, это сложно.
И да, даже если день жёсткий - можно найти10 40 минут и сделать хотя бы задачу.
Хотя бы одну задачу, Карл!
📝 Итого:
Делайте себе вызовы.
Пафосно:Пусть будет не LeetCode, а что-то своё. Но что-то, что будет каждый день приближать вас к цели.
➡️ Правило от меня: Не тратить на задачу больше 1 часа. Забить и отложить. Это помогло мне пару раз
#leetcode
#codingchallenge
#developer
#dotnet
💡 Channel | ✏ Chat
50-дневный стрик на LeetCode для меня было не просто. Это по сути значит, что я каждый день решал хотя бы одну задачу по алгоритмам и структурам данных. Иногда это было легко, иногда - совсем нет. Иногда — ночью, перед сном, иногда в 23:57 я пушил ответ. Но каждый день - стабильно.
1. Набрать форму 😅.
Когда пишешь бэкенд или работаешь с продакшеном - алгоритмы быстро уходят из головы. Последний раз я решал задачи года полтора назад. И естественно ничего этого я уже и не помню). А они тренируют мышление, умение оптимизировать и видеть код на уровень глубже, не всегда конечно, но увеличивают кругозор и экспертизу.
2. Дисциплина.
Можно сранвить как спорт: это как быть в прайме своей формы или готовиться к соревнованиям, даже 20 минут в день дают мощный эффект, если делать стабильно.
3. Challenge самому себе.
Не ради рейтинга, ради алгоритмов. А ради внутреннего ощущения, что ты не стоишь на месте. И оттачиваешь своё ремесло
4. Прокачка английского.
Понять что имеется ввиду тоже ещё тот челендж
Если давно хотел прокачаться в алгоритмах, начать легко: по одной задаче в день. Главное - регулярность, это сложно.
И да, даже если день жёсткий - можно найти
Хотя бы одну задачу, Карл!
Делайте себе вызовы.
Пафосно:
#leetcode
#codingchallenge
#developer
#dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6 2 1
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻2 1 1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4 2
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Курсы ИИ от Microsoft
Microsoft выкатил подборку бесплатных курсов по искусственному интеллекту на своей платформе Microsoft Learn. Всё бесплатно, легально, удобно, без смс но с регистрацией ☺️
Курсы на русском есть, но можно свитчутся на английский, изложение понятное можно осилить даже без C2
Темы есть на любой вкус:
– основы машинного обучения
– работа с Azure AI
– нейросети
– использование Copilot в повседневной разработке
– и что то на современном: как этично применять ИИ
Если давно хотел(а) прокачаться в этой теме, но не знал(а) с чего начать это отличный старт.
#AI
#microsoft
#cources
💡 Channel | ✏ Chat
Microsoft выкатил подборку бесплатных курсов по искусственному интеллекту на своей платформе Microsoft Learn. Всё бесплатно, легально, удобно, без смс но с регистрацией ☺️
Курсы на русском есть, но можно свитчутся на английский, изложение понятное можно осилить даже без C2
Темы есть на любой вкус:
– основы машинного обучения
– работа с Azure AI
– нейросети
– использование Copilot в повседневной разработке
– и что то на современном: как этично применять ИИ
Если давно хотел(а) прокачаться в этой теме, но не знал(а) с чего начать это отличный старт.
#AI
#microsoft
#cources
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Моё наивное решение VS. нечеловеческого?
➡️ Есть задача
В массиве чисел каждый элемент - это голос за кандидата. Найдите кандидата, который получил больше половины голосов.
1. Моё решение Оказалось наивным =(
O(n) по времени, O(n) по памяти
➡️ Как работает
Мы храним количество вхождений каждого элемента в словаре.
Для каждого числа проверяем, не встречается ли оно больше половины массива.
Если встречается - сразу возвращаем его.
Да всё ок - я доволен и задача решена.
💡 НО Проблема:
Это решение работает за O(n) по времени, но требует O(n) памяти из-за использования словаря. Это неплохо, но есть более эффективные способы.
Естьнечеловеческое умное решение
2. Boyer-Moore Majority Vote Algorithm: O(n) по времени, O(1) по памяти
➡️ Как работает
Алгоритм выбирает кандидата и отслеживает его "счёт".
Если счёт равен нулю, мы меняем кандидата на текущий элемент.
Алгоритм работает за O(n) по времени, но не требует дополнительных структур данных и O(1) по памяти 🤓
#leetcode
#dotnet
#algorithm
💡 Channel | ✏ Chat
В массиве чисел каждый элемент - это голос за кандидата. Найдите кандидата, который получил больше половины голосов.
1. Моё решение Оказалось наивным =(
O(n) по времени, O(n) по памяти
public int MajorityElement(int[] nums)
{
var limit = nums.Length / 2;
var dict = new Dictionary<int, int>();
foreach (var number in nums)
if (dict.TryGetValue(number, out var count))
{
if (count + 1 > limit)
return number;
dict[number] = count + 1;
}
else
{
dict[number] = 1;
}
return dict[0];
}
Мы храним количество вхождений каждого элемента в словаре.
Для каждого числа проверяем, не встречается ли оно больше половины массива.
Если встречается - сразу возвращаем его.
Да всё ок - я доволен и задача решена.
💡 НО Проблема:
Это решение работает за O(n) по времени, но требует O(n) памяти из-за использования словаря. Это неплохо, но есть более эффективные способы.
Есть
2. Boyer-Moore Majority Vote Algorithm: O(n) по времени, O(1) по памяти
public int MajorityElement(int[] nums)
{
int candidate = 0, count = 0;
foreach (var num in nums)
{
if (count == 0)
candidate = num;
count += (num == candidate) ? 1 : -1;
}
return candidate;
}
Если счёт равен нулю, мы меняем кандидата на текущий элемент.
Алгоритм работает за O(n) по времени, но не требует дополнительных структур данных и O(1) по памяти 🤓
#leetcode
#dotnet
#algorithm
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2👨💻1
Минус одна нерешённая проблема
Вот одна из причин почему стоит учить C#
Пока философы спорят - разработчики пишут код. C# не стал спорить, а мы тут ещё 100 лет спорили, а тут всё же просто, ну 😅
#developer
#dotnet
💡 Channel | ✏ Chat
Вот одна из причин почему стоит учить C#
Пока философы спорят - разработчики пишут код. C# не стал спорить, а мы тут ещё 100 лет спорили, а тут всё же просто, ну 😅
#developer
#dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2 2👨💻1
Duolingo заявила: AI-first
"AI - теперь не помощник, а центр всего" в Duolingo
Вообщем курсы, проверка людей, контент - всё теперь будут стоить вокруг AI
С одной стороны - наверно, вау. За год они выкатили столько курсов, сколько раньше делали за 3–5 лет. С другой - уволили часть команды, а ИИ теперь не просто помогает, а как бы реально заменяет.
Мне кажется, когда ИИ становится важнее человека - это уже какая-то дичь. Не уверен, что стоит гнаться за этим любой ценой, тем более сове
Но кто я такой, а кто они. У них там миллионы пользователей, миллионы долларов и миллионы строк кода 😅
📎 Ссылка: Duolingo will replace contract workers with AI
#AI
#Duolingo
#ГдеЛюди
💡 Channel | ✏ Chat
"AI - теперь не помощник, а центр всего" в Duolingo
Вообщем курсы, проверка людей, контент - всё теперь будут стоить вокруг AI
С одной стороны - наверно, вау. За год они выкатили столько курсов, сколько раньше делали за 3–5 лет. С другой - уволили часть команды, а ИИ теперь не просто помогает, а как бы реально заменяет.
Мне кажется, когда ИИ становится важнее человека - это уже какая-то дичь. Не уверен, что стоит гнаться за этим любой ценой, тем более сове
Но кто я такой, а кто они. У них там миллионы пользователей, миллионы долларов и миллионы строк кода 😅
📎 Ссылка: Duolingo will replace contract workers with AI
#AI
#Duolingo
#ГдеЛюди
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👨💻1
Видео по C# которое я пересматривал несколько раз 🙉
Это видос - прям топ, особенно если интересно как работает lock под капотом и не только. Если ты пишешь на .NET и думаешь что
- Что делает
- Как там внутри
- Какие есть другие варианты кроме
- Почему простой
Если пишешь на .NET и хочешь реально понять, как работает многопоточность и что происходит под капотом - это видео must watch. Каждый раз, когда пересматриваю, ловлю себя на новых инсайтах и что-то подмечаю 🙉🫠, особенно если копаешь в high performance или ловишь баги которые из разряда "у меня всё норм"
Видос без воды, с демками, очень технический и очень понятный(не всегда) .
Реально кайф!!
📎 Ссылка: YouTube
#dotnet
#underthehood
#lock
💡 Channel | ✏ Chat
Это видос - прям топ, особенно если интересно как работает lock под капотом и не только. Если ты пишешь на .NET и думаешь что
lock
- это простая конструкция, типа "обернул и поехали" — ну, ты ошибаешься 😄- Что делает
lock(obj)
на самом деле- Как там внутри
Monitor.Enter
и вся эта магия работает- Какие есть другие варианты кроме
lock
(spinlock
, mutex
и тд)- Почему простой
lock
- это вообще не так уж и простоЕсли пишешь на .NET и хочешь реально понять, как работает многопоточность и что происходит под капотом - это видео must watch. Каждый раз, когда пересматриваю, ловлю себя на новых инсайтах и что-то подмечаю 🙉🫠, особенно если копаешь в high performance или ловишь баги которые из разряда "у меня всё норм"
Видос без воды, с демками, очень технический и очень понятный
Реально кайф!!
📎 Ссылка: YouTube
#dotnet
#underthehood
#lock
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Станислав Сидристый — lock(_sync): иллюзия идеального выбора
Подробнее о конференции DotNext: https://jrg.su/3WmFRE
— —
Ввиду того, что lock является конструкцией языка, которая лаконично и понятно создает секцию монопольного исполнения кода, это создает иллюзию единственно верного решения. Станислав рассмотрит алгоритм…
— —
Ввиду того, что lock является конструкцией языка, которая лаконично и понятно создает секцию монопольного исполнения кода, это создает иллюзию единственно верного решения. Станислав рассмотрит алгоритм…
👨💻2👍1
Overemployment в русскоязычном IT
Ребята, делюсь с вами информацией, которую получил из первых рук - это закрытое исследование, охватывающее феномен overemployment в 2024–2025 гг. Это не просто пара кейсов - это масштабное явление, влияющее на рынок труда.
Overemployment - это не эксцесс, а новая стратегия выживания для многих IT-специалистов.
➡️ Что такое overemployment?
Это когда специалист работает сразу на двух (или более) фултайм-работах — зачастую скрытно. Причина проста: сохранить уровень дохода на фоне падения количества вакансий, нестабильности на рынке и роста цен.
➡️ Цифры, которые нужно знать
3169 специалистов из разных IT-направлений;
19% признались, что уже совмещали две или более фултайм-работы;
43% из них - делали это одновременно по времени;
28% работали 10–12 часов в день;
62% уже ощущают выгорание;
64% компаний начали отслеживать многозанятость.
➡️ Хотят ли сотрудники подрабатывать?
68% опрошенных рассматривают совмещение двух работ в будущем;
81% не видят в этом ничего аморального, если результат сохраняется;
При этом только 26% реально уверены, что смогут вытянуть два фула без ущерба здоровью;
Основная мотивация: рост расходов, страх увольнения, снижение рынка фултайм-вакансий.
➡️ Главные выводы
- Компании не готовы к этой практике и пока слабо умеют её отслеживать.
- Этика и выгорание становятся ключевыми проблемами — рынок перегревается не сверху, а “снизу”.
- Тренд может перерасти в норму, если рынок не стабилизируется.
Готовы взять вторую ставку? Или вы уже в игре?)
#Overemployment
#Подработка
#Инсайд
#ДвеРаботы
#humour
💡 Channel | ✏ Chat
Ребята, делюсь с вами информацией, которую получил из первых рук - это закрытое исследование, охватывающее феномен overemployment в 2024–2025 гг. Это не просто пара кейсов - это масштабное явление, влияющее на рынок труда.
Overemployment - это не эксцесс, а новая стратегия выживания для многих IT-специалистов.
Это когда специалист работает сразу на двух (или более) фултайм-работах — зачастую скрытно. Причина проста: сохранить уровень дохода на фоне падения количества вакансий, нестабильности на рынке и роста цен.
3169 специалистов из разных IT-направлений;
19% признались, что уже совмещали две или более фултайм-работы;
43% из них - делали это одновременно по времени;
28% работали 10–12 часов в день;
62% уже ощущают выгорание;
64% компаний начали отслеживать многозанятость.
68% опрошенных рассматривают совмещение двух работ в будущем;
81% не видят в этом ничего аморального, если результат сохраняется;
При этом только 26% реально уверены, что смогут вытянуть два фула без ущерба здоровью;
Основная мотивация: рост расходов, страх увольнения, снижение рынка фултайм-вакансий.
- Компании не готовы к этой практике и пока слабо умеют её отслеживать.
- Этика и выгорание становятся ключевыми проблемами — рынок перегревается не сверху, а “снизу”.
- Тренд может перерасти в норму, если рынок не стабилизируется.
Готовы взять вторую ставку? Или вы уже в игре?)
#Overemployment
#Подработка
#Инсайд
#ДвеРаботы
#humour
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2 2 1
Snakes and Ladders
Мне попалась задача на
Нахлынули вьетнамские флешбэки 😱 и я в детстве всего пару раз играл в эту игру, это воспоминание было разблокировано, но толку от этого конечно 0 и короче не помогло мне это 😅
Кратко просто найти и написать код решения любой игры в змейку и лестницы с полем n x n 🥹
➡️ Задача
На вход подаётся игровое поле размера n x n, представленное в виде двумерного массива. Каждая клетка может быть обычной (-1), содержать лестницу (ведёт на более высокий номер клетки) или змею (ведёт на более низкий номер).
Ты начинаешь на клетке 1 и хочешь добраться до последней клетки n^2, бросая кубик (от 1 до 6). Найди минимальное количество бросков, необходимых для достижения цели, с учётом змей и лестниц.
Поле нумеруется зигзагообразно: первый ряд - слева направо, второй - справа налево и т.д.
Нужно пройти 216 из 216 чтобы задача будет решена
➡️ Сюжетная линия
Я говорил что не больше часа тратить на задачу....
прошло 4 часа короче и 3 из 216 тестов было пройдено😅
Боль приносит, что ходить надо зигзагом. Тут фаза отрицания подъехала.😔
Я пробил второе дно, когда написал, вроде как классное решение.. как же я ошибался 😅
было пройдено 1 из 216 тестов, yо ничего быстро пофиксил где-то прошло уже 50 из 216. Вообщем я полностью удалил своё решение и начал с начало.
Дальше становилось больнее, господи зигзагом ходить надо (кто вообще придумал 🫣 эту игру) <— тут была фаза торга 😜 до принятия ещё ой как далеко😭
Дальше я запомнил число 72 из 216. Почему запомнил? потому что тут появились циклы, ЦИКЛЫ из змей и лесенок, Карл! конечно они должны были быть подумал я и начал дальше допиливать код.
Перевал за сотню где то 101 из 216. Оказывается могут быть не оптимальные варианты и переход по змеям не даёт преймущество в ходах 😓
Вообщем решил я её где-то за 5.5 часов 😅 за
➡️ Решение
1⃣ минус одна боль, преобразование двумерную доску в одномерную,
По сути мы начинаем с нижней строки и чередуем направление: одна строка читается слева направо, следующая - справа налево, и так далее и получаем одномернный массив
2⃣ Поиск в ширину
Стартуем с клетки 0 (самая нижняя левая). На каждом шаге пробуем кинуть кубик на 1 - 6 клеток вперёд.
Если попадаем на клетку с лестницей или змеёй, то перемещаемся сразу на указанную клетку. Если нету ничего, тогда мы считаем себя прухлом и ходим будто выбросили 6
3⃣ Используем очередь, чтобы искать самый короткий путь (минимальное количество ходов).
5⃣ Массив visited нужен, чтобы не заходить повторно на уже посещённые клетки и не застрять в цикле.
5⃣ Если не удалось дойти до конца возвращаем -1
Сама задача
909. Snakes and Ladders
Решение C#
#leetcode
#medium
#snakesandladders
💡 Channel | ✏ Chat
Мне попалась задача на
LeetCode
про змеи и лестницы -_-Нахлынули вьетнамские флешбэки 😱 и я в детстве всего пару раз играл в эту игру, это воспоминание было разблокировано, но толку от этого конечно 0 и короче не помогло мне это 😅
Кратко просто найти и написать код решения любой игры в змейку и лестницы с полем n x n 🥹
На вход подаётся игровое поле размера n x n, представленное в виде двумерного массива. Каждая клетка может быть обычной (-1), содержать лестницу (ведёт на более высокий номер клетки) или змею (ведёт на более низкий номер).
Ты начинаешь на клетке 1 и хочешь добраться до последней клетки n^2, бросая кубик (от 1 до 6). Найди минимальное количество бросков, необходимых для достижения цели, с учётом змей и лестниц.
Поле нумеруется зигзагообразно: первый ряд - слева направо, второй - справа налево и т.д.
Нужно пройти 216 из 216 чтобы задача будет решена
Я говорил что не больше часа тратить на задачу....
прошло 4 часа короче и 3 из 216 тестов было пройдено😅
Боль приносит, что ходить надо зигзагом. Тут фаза отрицания подъехала.
Я пробил второе дно, когда написал, вроде как классное решение.. как же я ошибался 😅
было пройдено 1 из 216 тестов, yо ничего быстро пофиксил где-то прошло уже 50 из 216. Вообщем я полностью удалил своё решение и начал с начало.
Дальше становилось больнее, господи зигзагом ходить надо (кто вообще придумал 🫣 эту игру) <— тут была фаза торга 😜 до принятия ещё ой как далеко
Дальше я запомнил число 72 из 216. Почему запомнил? потому что тут появились циклы, ЦИКЛЫ из змей и лесенок, Карл! конечно они должны были быть подумал я и начал дальше допиливать код.
Перевал за сотню где то 101 из 216. Оказывается могут быть не оптимальные варианты и переход по змеям не даёт преймущество в ходах 😓
Вообщем решил я её где-то за 5.5 часов 😅 за
О(n^2)
по памяти, сверхлюди решают за O(k)
По сути мы начинаем с нижней строки и чередуем направление: одна строка читается слева направо, следующая - справа налево, и так далее и получаем одномернный массив
Стартуем с клетки 0 (самая нижняя левая). На каждом шаге пробуем кинуть кубик на 1 - 6 клеток вперёд.
Если попадаем на клетку с лестницей или змеёй, то перемещаемся сразу на указанную клетку. Если нету ничего, тогда мы считаем себя прухлом и ходим будто выбросили 6
Сама задача
909. Snakes and Ladders
Решение C#
public int SnakesAndLadders(int[][] board)
{
var flatBoard = new int [board.Length * board.Length];
var index = 0;
var rightToLeft = true;
for (var i = board.Length - 1; i >= 0; i--)
{
for (var j = 0; j < board.Length; j++)
{
if (rightToLeft)
flatBoard[index] = rightToLeft ? board[i][j] : board[i][board.Length - 1 - j];
else
flatBoard[index] = board[i][board.Length - 1 - j];
index++;
}
rightToLeft = !rightToLeft;
}
var result = BFS(flatBoard, 0);
return result;
}
private int BFS(int[] board, int start)
{
HashSet<int> visited = new();
Queue<(int position, int step)> queue = new();
queue.Enqueue((start, 0));
visited.Add(start);
while (queue.TryDequeue(out var item))
{
if (item.position >= board.Length - 1)
return item.step;
for (var dice = 1; dice <= 6; dice++)
{
var next = item.position + dice;
if (next > board.Length - 1)
break;
if (visited.Add(next))
{
if (board[next] != -1)
next = board[next] - 1;
queue.Enqueue((next, item.step + 1));
}
}
}
return -1;
}
#leetcode
#medium
#snakesandladders
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3 3 2
31 из 31
Весь май я устроил себе челлендж - решать Daily Challenge на
Кто не пробывал, попробуйте но будет местами очень сложно(больно)
В начале месяца всё шло легко: задачи были несложные и я успевал решать их буквально за минут 10, но ближе к середине недели уровень сложности начинал расти 🙉. Особенно это чувствовалось по четвергам - задачи в этот день становились жёскими. Иногда и пятница подтягивалась, будто специально, чтобы добить и там бывала максимальная сложность 🥹
Тем не менее, я не пропустил ни одного дня.
Иногда приходилось сидеть до ночи, иногда - возвращаться к задаче несколько раз в течение дня, но я всё равно доводил её до конца.
Все задачи на самом деле были прям интересные, никогда бы не подумал что такое бывает, но они прям классные.
Вообщем дорешал задача с Snakes and Ladders была закрыта и сразу получил бэйдж.
#leetcode
#dailychallanges
💡 Channel | ✏ Chat
Весь май я устроил себе челлендж - решать Daily Challenge на
LeetCode
каждый день.Кто не пробывал, попробуйте но будет местами очень сложно
В начале месяца всё шло легко: задачи были несложные и я успевал решать их буквально за минут 10, но ближе к середине недели уровень сложности начинал расти 🙉. Особенно это чувствовалось по четвергам - задачи в этот день становились жёскими. Иногда и пятница подтягивалась, будто специально, чтобы добить и там бывала максимальная сложность 🥹
Тем не менее, я не пропустил ни одного дня.
Иногда приходилось сидеть до ночи, иногда - возвращаться к задаче несколько раз в течение дня, но я всё равно доводил её до конца.
Все задачи на самом деле были прям интересные, никогда бы не подумал что такое бывает, но они прям классные.
Вообщем дорешал задача с Snakes and Ladders была закрыта и сразу получил бэйдж.
#leetcode
#dailychallanges
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6 3👍1