Структура даних “Список”

Дізнайтесь, що таке структура даних "Список", і як вона працює!

pic

Чому нам потрібен список?

Ми стикаємось з проблемами масивів, які мають фіксований розмір. Якщо під час виконання програми потрібно додаткове місце в пам'яті, це неможливо з масивами. Щоб вирішити цю проблему, ми впровадили структуру даних Список, яка надає можливість динамічного виділення пам'яті за потребою під час виконання програми.

Список — це лінійна колекція елементів даних, відома як вузли (nodes), що містять дані та вказівник (pointer) на наступний вузол. Порядок елементів не визначається їх фізичним розташуванням у пам'яті, натомість кожен елемент вказує на наступний елемент за допомогою вказівника (pointer)Читати далі

Журнал, тиждень 3, день 4: Змагальне програмування

Дата: 22 серпня 2024 року

Вступ: Я розпочинаю 10-тижневу подорож для покращення своїх навичок у змагальному програмуванні. Сьогодні - 4-й день (3-й тиждень) цього захоплюючого виклику. Моя мета - щодня розв’язувати задачі з програмування на LeetCode, code360 та завантажувати рішення до свого репозиторію на GitHub. Документуючи свій прогрес через щоденні статті, я маю на меті зберігати мотивацію та відстежувати свої покращення з часом.

ТЕМА: Задачі з DSA (Структури даних та алгоритми)

Мета на сьогодні: Сьогоднішня мета була вирішити задачу Максимальна сума підмасиву, яка стосується проблем зі структур даних та алгоритмами. Ви можете знайти конкретні питання … Читати далі

Тиждень 3, День 5: Журнал змагального програмування

Дата: 23 серпня 2024 року

Вступ_: Я розпочинаю 10-тижневу подорож для покращення своїх навичок у змагальному програмуванні. Сьогодні розпочинається День 5 (Тиждень 3) цього захоплюючого виклику. Моя мета — щодня розв’язувати задачі з програмування на LeetCode, code360 і завантажувати рішення до мого репозиторію на GitHub. Документуючи свій прогрес через щоденні статті, я прагну підтримувати мотивацію і відстежувати свій розвиток.

ОБГОВОРЕНІ ТЕМИ: ЗАДАЧІ З DSA (Структури даних та алгоритми)

Мета сьогоднішнього дня: Метою було розв’язати задачу Купівля та продаж акцій в рамках задач з структур даних та алгоритмів. Ви можете знайти конкретні питання та мої рішення на … Читати далі

Тиждень 4, День 1: Щоденник змагального програмування

Дата: 26 серпня 2024 року

Вступ: Я починаю 10-тижневу подорож для покращення своїх навичок у змагальному програмуванні. Сьогодні — перший день (тиждень 4) цього захоплюючого виклику. Моя мета — вирішувати задачі з програмування щодня на LeetCode, code360 та завантажувати рішення на мій репозиторій на GitHub. Документуючи свій прогрес через щоденні статті, я прагну підтримувати мотивацію та відслідковувати свої покращення з часом.

ОБГОВОРЕНІ ТЕМИ: ЗАДАЧІ З DSA (Структури Даних та Алгоритми)

Мета на сьогодні: Сьогоднішньою метою було вирішити задачу Rearrange Array Elements By Sign з теми структур даних та алгоритмів. Ви можете знайти конкретні питання та мої … Читати далі

✍️ Програма для симуляції землетрусу на мові C ✍️

У програмуванні на C, симулювати землетрус (або виявляти землетрус) зазвичай означає обробку даних з датчиків, таких як акселерометри або сейсмографи. Однак симуляція або виявлення реальних землетрусів є складним завданням і вимагає реальних даних у режимі реального часу, складної обробки сигналів та апаратного забезпечення.

Якщо ви зацікавлені в простій симуляції ефектів землетрусу в програмі, ми можемо створити базовий приклад, де програма симулює тремтіння землі (яке буде представлене числами). Це може бути навчальний інструмент, щоб зрозуміти, як землетрус може вплинути на навколишнє середовище.

Ось простий фрагмент коду на C, який симулює "землетрус", змушуючи землю тремтіти випадковими інтервалами:

#include   
#include   
#include   
#include 

// 
Читати далі

Всеосяжний список просунутих концепцій Spring Boot, які кожен розробник Java повинен освоїти

Spring Boot — потужний фреймворк, який спрощує розробку корпоративних додатків на Java. Хоча основи важливі, володіння просунутими концепціями може значно підвищити ваші навички та підготувати до реальних викликів. Ось всеосяжний список просунутих тем Spring Boot, які кожен Java-розробник повинен вивчити, з деталями про кожну з них.

**Примітка — Ця стаття є продовженням попередньої — посилання

pic

https://youtube.com/@codefarm0

1. Реалізація стійких мікросервісів з Resilience4j

  • Використовуйте патерни, такі як Circuit Breaker (Перемикач ланцюга), Retry (Повтор), Bulkhead (Контейнер), та Rate Limiter (Обмежувач швидкості) для побудови стійких до помилок систем.
  • Приклад: Позначте методи за допомогою @CircuitBreaker для обробки тимчасових збоїв.
  • Інтеграція з інструментами моніторингу, такими
Читати далі

Мінімальний розмір підмасиву з сумою — leetcode #209: Покроковий посібник

pic

Задача «Мінімальний розмір підмасиву з сумою» є класичним завданням для використання техніки «ковзаючого вікна» (sliding window), яке перевіряє вашу здатність ефективно працювати з підмасивами. Розглянемо її детальніше і реалізуємо на Java.

Умови задачі

Дано масив додатних цілих чисел nums та додатне ціле число target. Потрібно повернути мінімальну довжину підмасиву [nums[l], nums[l+1], ..., nums[r-1], nums[r]], сума елементів якого більша або дорівнює target. Якщо такого підмасиву немає, поверніть 0.

Приклад 1:

Вхід:
target = 7; nums = {2, 3, 1, 2, 4, 3};

Вихід: 2

Пояснення:
Підмасив [4, 3] має мінімальну довжину 2 і суму … Читати далі

Алгоритми та структури даних — Рекурсія за допомогою Java

Git посилання: https://github.com/prakashbtech87/PrakashJavaRepository/blob/main/src/main/java/com/prakash/a2zdsa/recursion/ReverseArray.java

package com.prakash.a2zdsa.recursion;  

/**  
 * Клас ReverseArray демонструє перевертання масиву за допомогою рекурсії.  
 * Автор: Prakash Karuppusamy  
 */  
public class ReverseArray {  

 /**  
 * Рекурсивний метод для перевертання масиву.  
 *  
 * @param i Поточний індекс для обміну елементами з початку.  
 * @param arr Масив, який потрібно перевернути.  
 * @param n Довжина масиву.  
 */  
 static void reverse(int i, int[] arr, int n) {  
 // Базова умова: зупинка рекурсії, коли досягнуто середину масиву.  
 if (i >= n / 2) return;  

 // Обмін елементами на позиціях i та (n - i - 1).  
 swap(arr, i, n - i - 1);  

 // 
Читати далі

Основи мережевого програмування на Java: Мережеві з’єднання через сокети UDP

У наших попередніх двох статтях ми обговорювали, як побудувати простий TCP-клієнт і сервер за допомогою Java. (Читати тут) та як зробити їх багатопотоковими (Читати тут).

У цій останній статті серії про мережеве програмування на Java ми розглянемо, як створити простий, але функціональний UDP-відправник (sender) та приймач (receiver) за допомогою Java. UDP (User Datagram Protocol) — це безз'єднувальний протокол комунікації, що широко використовується в ситуаціях, де критично важлива швидкість, а надійність можна забезпечити на рівні додатка.

pic

Що таке UDP?

UDP розшифровується як User Datagram Protocol і працює поверх IP (Internet Protocol). На відміну від TCP, UDP не … Читати далі

SOLID Принципи: Коротко та по суті

pic

Джерело

Принципи S.O.L.I.D., які є основними для розробки надійних та довговічних додатків, є базовими принципами програмування, які повинен знати кожен розробник програмного забезпечення.

У процесі розробки програмного забезпечення дуже важливо забезпечити читаність коду, зручність для обслуговування (maintenance) та розширюваність (extension). У цьому контексті, принципи SOLID є основою для створення добре спроектованих програмних систем і складаються з п’яти важливих принципів. Ці принципи спрямовані на запобігання помилок під час розробки архітектури програмного забезпечення та надання можливості робити код більш гнучким, стійким та легким у підтримці. У цій статті ми розглянемо, що таке принципи SOLID, чому вони важливі і … Читати далі