Сервис для поиска N-го минимального числа в Excel файлах формата .xlsx
Сервис предоставляет REST API для нахождения N-го минимального числа среди чисел, расположенных в столбик в Excel файле. Используется эффективный алгоритм на основе Max Heap без применения встроенных функций сортировки.
- Java 21
- Maven 3.8+
- Доступ к локальным файлам (для чтения Excel документов)
mvn clean package mvn spring-boot:runjava -jar target/number-service-1.0.0.jar
После запуска приложение будет доступно по адресу: http://localhost:8080
- Swagger UI:
http://localhost:8080/swagger-ui.html - OpenAPI Specification:
http://localhost:8080/api-docs
- Создайте тестовый Excel файл с числами (можно использовать встроенный генератор):
java -cp target/number-service-1.0.0.jar ru.test.numberservice.util.TestFileCreator-
Это создаст файл
C:/temp/test_numbers.xlsx -
Откройте Swagger UI (
http://localhost:8080/swagger-ui.html) -
Вызовите метод POST
/api/find-nth-minс параметрами:- filePath:
C:/temp/test_numbers.xlsx - n:
3(для поиска 3-го минимального числа)
- filePath:
-
В ответе вы получите результат - N-ое минимальное число из файла:
Пример содержимого test_numbers.xlsx: 12 17 41 31 54 15 11 10 1
Результат для n=3: 11 (3-е минимальное число: 1, 10, 11, 12, 15...)
- Только .xlsx файлы
- Максимальный размер файла: 10 МБ
- Числа могут быть представлены как числами, так и текстом, содержащим цифры
Сервис возвращает соответствующие HTTP коды ошибок:
- 400 Bad Request - при неверных параметрах или проблемах с файлом
- 500 Internal Server Error - при внутренних ошибках обработки
{
"status": "BAD_REQUEST",
"reason": "Validation Error",
"message": "File should be xlsx extension",
"timestamp": "2025-11-15:10:10:10"
}controller- REST контроллерыservice- бизнес-логикаvalidator- валидация входных данныхexception- обработка исключенийutil- вспомогательные утилиты
Сервис использует алгоритм Max Heap для эффективного поиска N-го минимального элемента:
- Временная сложность: O(M log N), где M - количество чисел в файле
- Пространственная сложность: O(N)
- Не требует полной сортировки всех элементов
Запуск тестов:
mvn test