
💸 Скидки до 70% для бизнеса и финансов
Ловите лучшие слоты в каналах бизнес-тематик — только до 6 апреля!
Забрать скидку

5.8

Python | LeetCode
2
Поделиться
В избранное
Купить рекламу в этом канале
Формат:
keyboard_arrow_down
- 1/24
- 2/48
1 час в топе / 24 часа в ленте
Количество:
keyboard_arrow_down
- 1
- 2
- 3
- 4
- 5
- 8
- 10
- 15
Стоимость публикации:
local_activity
4 475.52₽4 475.52₽local_mall
0.0%
Осталось по этой цене:0
Последние посты канала
imageИзображение не доступно для предпросмотра
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
285
20:50
03.04.2025
Задача: 667. Beautiful Arrangement II
Сложность: medium
Даны два целых числа n и k, составьте список answer, содержащий n различных положительных чисел в диапазоне от 1 до n, который соответствует следующему требованию:
Предположим, что этот список answer = [a1, a2, a3, ... , an], тогда список [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1 - an|] имеет ровно k различных чисел. Верните список answer. Если существует несколько допустимых ответов, верните любой из них.
Пример:
Input: n = 3, k = 1
Output: [1,2,3]
Explanation: The [1,2,3] has three different positive integers ranging from 1 to 3, and the [1,1] has exactly 1 distinct integer: 1{}
👨💻 Алгоритм:
1⃣Инициализация списка:
Начните с создания списка от 1 до n: [1, 2, 3, ..., n].
2⃣Конструирование шаблона с k различиями:
Для обеспечения k различных значений разностей используйте следующий подход:
Включайте числа попеременно с конца и начала списка, начиная с n и 1, чтобы создать как можно больше уникальных разностей.
Если требуется меньше k, оставшиеся числа просто добавляйте в порядке возрастания, чтобы не увеличивать количество уникальных разностей.
3⃣Заполнение списка:
Заполните оставшуюся часть списка последовательными числами, чтобы сохранить уникальные числа в диапазоне от 1 до n.
😎 Решение:
def constructArray(n, k):
answer = []
left, right = 1, n
for i in range(k + 1):
if i % 2 == 0:
answer.append(left)
left += 1
else:
answer.append(right)
right -= 1
if k % 2 == 0:
answer.extend(range(left, right + 1))
else:
answer.extend(range(right, left - 1, -1))
return answer{}
Ставь 👍 и забирай 📚 Базу знаний529
16:01
03.04.2025
imageИзображение не доступно для предпросмотра
Скидка до 30% на вашу первую Яндекс Командировку
✨Получите скидку 30% на бронирование отеля вашей первой командировки.
Все необходимые сервисы на единой платформе, для командировок по всему миру.
Широкий выбор отелей и билетов. Без комиссий.
Узнать больше
#реклама
business.go.yandex
О рекламодателе
Реклама на Яндексе
676
10:39
03.04.2025
Задача: 762. Prime Number of Set Bits in Binary Representation
Сложность: hard
Если даны два целых числа left и right, верните количество чисел в диапазоне [left, right], имеющих простое число битов в двоичном представлении. Напомним, что число битов в двоичном представлении - это количество единиц, присутствующих в числе 1. Например, 21 в двоичном представлении - это 10101, которое имеет 3 бита.
Пример:
Input: left = 10, right = 15
Output: 5{}
👨💻 Алгоритм:
1⃣Создайте функцию для подсчета количества единиц в двоичном представлении числа.
2⃣Создайте функцию для проверки, является ли число простым.
3⃣Пройдите через все числа в диапазоне [left, right] и подсчитайте числа, у которых количество битов в двоичном представлении является простым числом.
😎 Решение:
def countPrimeSetBits(left, right):
def countBits(x):
return bin(x).count('1')
def isPrime(x):
if x < 2:
return False
for i in range(2, int(x ** 0.5) + 1):
if x % i == 0:
return False
return True
count = 0
for num in range(left, right + 1):
if isPrime(countBits(num)):
count += 1{}
Ставь 👍 и забирай 📚 Базу знаний642
09:01
03.04.2025
От чего зависит эффективность автотестов?
От их правильного написания и поддерживаемости!
В QA GURU учат приручать Java, чтобы ваши автотесты работали, как часы. Вот несколько лайфхаков, о которых мы расскажем на вводном занятии уже сегодня (20:00 Мск):
1. Используйте понятные и описательные названия тестов
Названия тестов должны четко отражать их цель. Это упрощает понимание кода всеми членами команды.
Например:
// Хорошо
public void verifyLoginWithValidCredentials() { ... }{}
// Плохо
public void test1() { ... }{}
Описательные названия помогают быстро понять, что проверяет тест, без необходимости изучения его внутренней логики.
2. Применяйте Page Object Model (POM)
Page Object Model позволяет отделить логику теста от структуры веб-страницы, что делает код более модульным и удобным для поддержки при изменениях интерфейса.
Пример использования:
// Класс
Page Object
public class LoginPage {
private By usernameField = By. id("username");
private By passwordField = By. id("password");
private By loginButton = By. id("loginBtn");
public void enterUsername(String username) {
driver.findElement(usernameField).sendKeys(username);
}
public void enterPassword(String password) {
driver.findElement(passwordField).sendKeys(password);
}
public void clickLoginButton() {
driver.findElement(loginButton).click();
}
}{}
// Тестовый сценарий
LoginPage loginPage = new LoginPage(driver);
loginPage.enterUsername("john.doe");
loginPage.enterPassword("password123");
loginPage.clickLoginButton();
{}
POM способствует повторному использованию кода и улучшает читаемость тестов.
3. Используйте параметризацию и data-driven подход
Параметризованные тесты позволяют запускать один и тот же сценарий с различными входными данными, что увеличивает охват тестирования без дублирования кода.
@ ParameterizedTest
@ CsvSource({"john.doe, password123", "jane.smith, test@123"})
public void verifyLogin(String username, String password) {
LoginPage loginPage = new LoginPage(driver);
loginPage.enterUsername(username);
loginPage.enterPassword(password);
loginPage.clickLoginButton();
}{}
Этот подход делает тесты более гибкими и масштабируемыми.
4. Следуйте принципу AAA (Arrange, Act, Assert)
Структурируйте тесты в три этапа:
Arrange: подготовка данных и окружения.
Act: выполнение действия.
Assert: проверка результата.
Пример:
@ Test
public void testAddition() {
// Arrange
Calculator calculator = new Calculator();
// Act
int result = calculator.add(2, 3);
// Assert
assertEquals(5, result);
}{}
Этот подход делает тесты более организованными и легко читаемыми.
5. Логирование и отчетность
Добавляйте логирование в тесты для диагностики проблем:
log. info("Entering username: " + username);
log. info("Clicking on the login button");
{}
Интеграция инструментов отчетности (например, Allure) помогает визуализировать результаты тестов и быстро выявлять ошибки.
6. Регулярные ревью кода
Проводите регулярные ревью автотестов для повышения качества кода. Это помогает выявить потенциальные проблемы, улучшить читаемость и обеспечить соблюдение стандартов кодирования.
7. Автоматизация и CI/CD
Используйте инструменты автоматизации (Maven, Gradle) для запуска тестов в рамках CI/CD пайплайнов. Это ускоряет процесс разработки и обеспечивает стабильность приложения на всех этапах.
Хотите узнать больше? Присоединяйтесь уже сегодня (20:00 Мск) к бесплатному открытому уроку!
🔗 Зарегистрируйтесь на первый открытый урок по ссылке.528
07:00
03.04.2025
imageИзображение не доступно для предпросмотра
Бизнес образование в Moscow Business Academy (MBA)
Получите современное бизнес образование от международных экспертов.
✅Более 37 направлений обучения.
✅Международные дипломы.
✅Online и очные форматы обучения.
✅Разборы практических бизнес-кейсов.
Скидка на все программы online до 35%!
Узнать больше
#реклама 16+
moscow.mba
О рекламодателе
823
18:40
02.04.2025
Задача: 662. Maximum Width of Binary Tree
Сложность: medium
Дан корень бинарного дерева, верните максимальную ширину данного дерева.
Максимальная ширина дерева - это максимальная ширина среди всех уровней.
Ширина одного уровня определяется как расстояние между конечными узлами (самыми левыми и самыми правыми ненулевыми узлами), где нулевые узлы между конечными узлами, которые присутствовали бы в полном бинарном дереве, продолжающемся до этого уровня, также учитываются при вычислении длины.
Гарантируется, что ответ будет в диапазоне 32-битного знакового целого числа.
Пример:
Input: root = [1,3,2,5,3,null,9]
Output: 4
Explanation: The maximum width exists in the third level with length 4 (5,3,null,9).{}
👨💻 Алгоритм:
1⃣Инициализация:
Создайте очередь для хранения узлов и их позиций на уровне.
Начните с корневого узла и его позиции 0.
2⃣Обработка каждого уровня:
Для каждого уровня дерева получите его узлы и их позиции.
Вычислите ширину уровня как разницу между максимальной и минимальной позициями плюс один.
3⃣Обновление максимальной ширины:
Обновите максимальную ширину, если текущая ширина уровня больше.
😎 Решение:
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def widthOfBinaryTree(self, root: TreeNode) -> int:
if not root:
return 0
max_width = 0
queue = deque([(root, 0)])
while queue:
level_length = len(queue)
_, first_pos = queue[0]
for i in range(level_length):
node, pos = queue.popleft()
if node.left:
queue.append((node.left, 2 * pos))
if node.right:
queue.append((node.right, 2 * pos + 1))
max_width = max(max_width, pos - first_pos + 1)
return max_width{}
Ставь 👍 и забирай 📚 Базу знаний770
16:01
02.04.2025
imageИзображение не доступно для предпросмотра
Ищешь высокооплачиваемые проекты? Попробуй SkillStaff
SkillStaff — это платформа для ИТ-специалистов, менеджеров и креаторов, которым мало одного оклада. Здесь можно найти клиентов, выполнять их проекты и увеличивать свой доход.
- Проекты с гибким графиком: part time, full time, удаленка и гибрид
- Ставка за час работы — та, что ты сам выбрал
- Клиенты — ведущие бренды, проверенные с юридической точки зрения при регистрации на платформе
- Оплата поступает ежемесячно на расчетный счет исполнителя
- Удобный личный кабинет и функционал, автоматизирующий документооборот
Все, что нужно для работы — иметь статус самозанятого или ИП, а платформа поможет со всеми нюансами.
Регистрируйся прямо сейчас
Зарегистрироваться
#реклама 16+
skillstaff.ru
О рекламодателе
834
12:48
02.04.2025
Задача: 1426. Counting Elements
Сложность: easy
Дан целочисленный массив arr, посчитайте, сколько элементов x в нем есть таких, что x + 1 также находится в arr. Если в arr есть дубликаты, считайте их отдельно.
Пример:
Input: arr = [1,2,3]
Output: 2
Explanation: 1 and 2 are counted cause 2 and 3 are in arr.{}
👨💻 Алгоритм:
1⃣Создайте вспомогательную функцию для проверки, содержится ли элемент в массиве.
2⃣Итерируйте по каждому элементу массива и используйте вспомогательную функцию для проверки, содержится ли элемент x + 1 в массиве.
3⃣Увеличьте счетчик, если x + 1 найден, и верните значение счетчика.
😎 Решение:
class Solution:
def countElements(self, arr: List[int]) -> int:
def integerInArray(arr, target):
for x in arr:
if x == target:
return True
return False
count = 0
for x in arr:
if integerInArray(arr, x + 1):
count += 1
return count{}
Ставь 👍 и забирай 📚 Базу знаний850
09:01
02.04.2025
play_circleВидео недоступно для предпросмотра
Онлайн-интенсив для ИТ-специалистов в Открытых школах Т1
Открытые школы — это возможность за месяц прокачать свои навыки и получить оффер в ИТ-холдинг Т1.
С тебя — год опыта работы в ИТ, с нас — бесплатный онлайн-интенсив и топовые преподаватели.
Что ты получишь?
✅ Уникальный рыночный опыт. Наши проекты ежегодно получают награды на ИТ-конкурсах: Global CIO, Национальной банковской премии и др.
✅ Быстрый рост в ИТ при экспертной поддержке.
✅ Материалы от HR, которые помогут прокачать резюме и подготовиться к интервью в Т1.
✅ Поддержка опытных преподавателей и уникальный карьерный фаст-трек до мидла в Т1 для выпускников интенсива.
✅ Реальный шанс получить оффер в Т1.
Подавай заявку до 11 апреля и приходи учиться! Старт ИТ-интенсива уже 14 апреля.
Подать заявку
#реклама 16+
t1.ru
О рекламодателе
913
20:46
01.04.2025
close
Спецпредложения
Прогеры

Каналов
20
189K
lock_outline
CPV
lock_outline186 922.89 ₽₽
112 153.74 ₽₽
-40%
С этим каналом часто покупают
Отзывы канала
Отзывов нет
Новинки в тематике
Лучшие в тематике
Выбрано
0
каналов на сумму:0.00₽
Подписчики:
0
Просмотры:
lock_outline
Перейти в корзинуКупить за:0.00₽
Комментарий