#hard
Задача: 629. K Inverse Pairs Array
Для целочисленного массива nums инверсная пара - это пара целых чисел [i, j], где 0 <= i < j < nums.length и nums[i] > nums[j]. Учитывая два целых числа n и k, верните количество различных массивов, состоящих из чисел от 1 до n, в которых существует ровно k инверсных пар. Поскольку ответ может быть огромным, верните его по модулю 109 + 7.
Пример:
👨💻 Алгоритм:
1⃣ Инициализация
Создайте двумерный массив dp размером [n+1][k+1] и установите начальное значение dp[0][0] = 1. Остальные значения установите в 0.
2⃣ Заполнение DP-таблицы
Используйте два вложенных цикла для заполнения таблицы DP. Внешний цикл перебирает длину массива i от 1 до n, а внутренний цикл перебирает количество инверсий j от 0 до k. Если j == 0, то dp[i][j] = 1. В противном случае обновляйте dp[i][j] с учетом всех возможных позиций вставки нового элемента в массив длины i-1.
3⃣ Возвращение результата
Результатом будет значение dp[n][k].
😎 Решение:
Ставь 👍 и забирай 📚 Базу знаний
Задача: 629. K Inverse Pairs Array
Для целочисленного массива nums инверсная пара - это пара целых чисел [i, j], где 0 <= i < j < nums.length и nums[i] > nums[j]. Учитывая два целых числа n и k, верните количество различных массивов, состоящих из чисел от 1 до n, в которых существует ровно k инверсных пар. Поскольку ответ может быть огромным, верните его по модулю 109 + 7.
Пример:
Input: n = 3, k = 0
Output: 1
Создайте двумерный массив dp размером [n+1][k+1] и установите начальное значение dp[0][0] = 1. Остальные значения установите в 0.
Используйте два вложенных цикла для заполнения таблицы DP. Внешний цикл перебирает длину массива i от 1 до n, а внутренний цикл перебирает количество инверсий j от 0 до k. Если j == 0, то dp[i][j] = 1. В противном случае обновляйте dp[i][j] с учетом всех возможных позиций вставки нового элемента в массив длины i-1.
Результатом будет значение dp[n][k].
public class Solution {
public int kInversePairs(int n, int k) {
int MOD = 1000000007;
int[][] dp = new int[n + 1][k + 1];
dp[0][0] = 1;
for (int i = 1; i <= n; i++) {
dp[i][0] = 1;
for (int j = 1; j <= k; j++) {
dp[i][j] = dp[i][j - 1] + dp[i - 1][j];
if (j >= i) {
dp[i][j] -= dp[i - 1][j - i];
}
dp[i][j] = (dp[i][j] + MOD) % MOD;
}
}
return dp[n][k];
}
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какие элементы языка отвечают за наследование?
За наследование в Java отвечают ключевые слова extends И implements . Класс- наследник может унаследовать поля и методы родительского класса, а интерфейсы позволяют реализовать множественное наследование.
👉 Новости 👉 Платформа
За наследование в Java отвечают ключевые слова extends И implements . Класс- наследник может унаследовать поля и методы родительского класса, а интерфейсы позволяют реализовать множественное наследование.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что такое стектрейс? Как его получить?
Стектрейс - это список методов, которые были вызваны до момента возникновения ошибки. Он помогает понять, где произошла ошибка, и выявить проблемные участки кода. Получить его можно из исключений через
👉 Новости 👉 Платформа
Стектрейс - это список методов, которые были вызваны до момента возникновения ошибки. Он помогает понять, где произошла ошибка, и выявить проблемные участки кода. Получить его можно из исключений через
printStackTrace()
или getStackTrace()
.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Какие элементы языка отвечают за полиморфизм?
Полиморфизм реализуется через ключевые элементы: наследование (
👉 Новости 👉 Платформа
Полиморфизм реализуется через ключевые элементы: наследование (
extends
), интерфейсы ( implements
), перегрузку методов ( overloading
) и переопределение методов ( overriding
). Он позволяет использовать один и тот же код для работы с объектами разных типов.Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Юнит-тестирование сервисного уровня в приложении Spring Boot (JUnit 5 и Mockito)
Как настроить окружение для тестирования, включая добавление необходимых зависимостей, таких как spring-boot-starter-test, .
✔️ В статье рассмотрим процесс создания тестов для сервисных компонентов, где репозитории заменяются на mock-объекты с помощью Mockito. Основное внимание уделяется проверке бизнес-логики приложения без взаимодействия с реальной базой данных, что позволяет обеспечить изоляцию тестов и повысить их эффективность.
Читать статью
👉 Новости 👉 Платформа
Как настроить окружение для тестирования, включая добавление необходимых зависимостей, таких как spring-boot-starter-test, .
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#видео
🤓 Создание приложения-чатбота с помощью Spring Boot, React JS и ChatGPT API
В этом пошаговом руководстве пройдем через весь процесс разработки, от настройки бэкенда с помощью Spring Boot до создания интерактивного фронтенда с помощью React JS и интеграции API ChatGPT от OpenAI для интеллектуальных ответов.
📱 Cмотреть видео
👉 Новости 👉 Платформа
В этом пошаговом руководстве пройдем через весь процесс разработки, от настройки бэкенда с помощью Spring Boot до создания интерактивного фронтенда с помощью React JS и интеграции API ChatGPT от OpenAI для интеллектуальных ответов.
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🥺 Подробное руководство по реализации аутентификации и авторизации на основе JWT в приложении Spring Boot 3 с использованием Spring Security и базы данных MySQL.
В этом руководстве автор демонстрирует создание REST API для входа пользователей, генерации JWT и его возврата в ответе
Читать статью
👉 Новости 👉 Платформа
В этом руководстве автор демонстрирует создание REST API для входа пользователей, генерации JWT и его возврата в ответе
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что такое перегрузка (overloading) метода?
Перегрузка - это определение методов с одинаковым именем, но с разным количеством или типами параметров. Она используется для повышения удобства и читабельности кода.
👉 Новости 👉 Платформа
Перегрузка - это определение методов с одинаковым именем, но с разным количеством или типами параметров. Она используется для повышения удобства и читабельности кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Шпаргалка по основам Java с примерами кода.
В ней есть всё, что может пригодиться начинающему разработчику.
Оригинал в хорошем качестве можно взять тут
👉 Новости 👉 База вопросов
В ней есть всё, что может пригодиться начинающему разработчику.
Оригинал в хорошем качестве можно взять тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 CountDownLatch
👉 Новости 👉 База вопросов
CountDownLatch
— это синхронизационный механизм, предоставляемый пакетом java.util.concurrent
, который позволяет одному или нескольким потокам ждать, пока определенное количество операций завершится, прежде чем они смогут продолжить свою работу. Он полезен в ситуациях, когда нужно дождаться завершения нескольких параллельных задач, прежде чем продолжить выполнение кода.CountDownLatch
работает по принципу счетчика, который уменьшается с каждым вызовом метода countDown()
. Когда счетчик достигает нуля, все ожидающие потоки могут продолжить свою работу.Please open Telegram to view this post
VIEW IN TELEGRAM
#собес
🤔 Что такое класс, объект, интерфейс?
Класс - это шаблон или "чертеж" для создания объектов, определяющий их свойства и поведение.
Объект - это конкретный экземпляр класса с определенными значениями свойств.
Интерфейс - это контракт, который определяет набор методов, которые должен реализовать класс.
👉 Новости 👉 Платформа
Класс - это шаблон или "чертеж" для создания объектов, определяющий их свойства и поведение.
Объект - это конкретный экземпляр класса с определенными значениями свойств.
Интерфейс - это контракт, который определяет набор методов, которые должен реализовать класс.
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Изучите приоритеты конфигурации Spring Boot и различия между файлами .yaml и .properties на наглядных примерах
Статья объясняет приоритетность загрузки конфигурационных файлов в приложениях (например, на Spring Boot) и сравнивает форматы YAML и properties: YAML удобнее для сложных структур благодаря иерархии, а properties-файлы проще и подходят для плоских настроек.
Подробнее
👉 Новости 👉 База вопросов
Статья объясняет приоритетность загрузки конфигурационных файлов в приложениях (например, на Spring Boot) и сравнивает форматы YAML и properties: YAML удобнее для сложных структур благодаря иерархии, а properties-файлы проще и подходят для плоских настроек.
Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM