Fading Coder

One Final Commit for the Last Sprint

25 Essential Python Programming Exercises: From Mathematical Puzzles to Classic Algorithms

Problem 1: Narcissistic Numbers (Armstrong Numbers) A Narcissistic number (also known as an Armstrong number or PPDI) is a 3-digit number where the sum of the cubes of its digits equals the number itself. For example: $1^3 + 5^3 + 3^3 = 153$. for candidate in range(100, 1000): hundreds = candidate /...

Sequential Lists and Linked Lists: Core Linear Data Structures Explored with Implementations and Exercises

Linear structures consist of a finite sequence of elements with identical properties. Common linear data structures include arrays, linked lists, stacks, queues, and strings. While linear structures follow a continuous logical arrangement, their physical storage may be either contiguous or non-conti...

Contest Problem Analysis: Dynamic Programming and Graph Algorithms

This article examines several algorithmic problems featuring dynamic programming, state management, and graph traversal techniques. Problem 1: Frozen Dumplings Consider a scenario where daily dumpling prices vary, and storage costs accrue for each day a dumpling is kept. Given prices for n days and...

Implementing Sliding Window Algorithms for String Manipulation

Sliding Window Algorithm Paterns Core Implementation Template const slidingWindowSolution = (inputString) => { // Initialize tracking variables let [primaryVar, secondaryVar] = [initialValue1, initialValue2]; // Set window boundaries let windowStart = 0; const results = []; for (let windowEnd = 0...

Finding the Longest Common Prefix in an Array of Strings

The task is to identify the longest common prefix shared among all strings in a given array. For instance, with an input like ['abc', 'abcd', 'abd'], the result should be 'ab'. Approach 1: Brute Force Itertaion A straightforward method involves incrementally building prefixes and verifying each one...

Common Linked List Problems and Solutions

Copy List with Random Pointer This problem is a classic deep copy scenario, similar to graph cloning (e.g., LeetCode 133). Approach: Traverse the list once to copy the next pointers. During this traversal, store the mapping between original nodes and their copies in a hash map. Traverse the list a s...

Solving the Two Sum Problem in Java

Given an array of integers nums and an integer target, return the indices of two numbers that add up to the target value. Example: Input: nums = [3, 4, 2], target = 6 Output: [1, 2] Explanation: nums[1] + nums[2] equals 6 Approaches Brute Force Method: Iterate through each element and check every ot...

Implementing Fast Exponentiation Algorithms in JavaScript

Calculating the power of a number $x^n$ is a fundamental operation. While the most straightforward approach involves iterative multiplication, more efficient techniques exist to handle large exponents or performance-critical applications. The Linear Time Approach The most intuitive method to compute...

Counting Square Product Pairs and Computing Latest Arrival Times in Graph Problems

Counting Pairs Whose Product is a Perfect Square Given an array of length N, count the number of index pairs (i, j) where i < j such that the product A[i] * A[j] is a perfect square (a non-negative integer square). Approach For a non-zero integer x, define its square-free component as x divided b...

Implementing Dynamic Programming Solutions in Java: Matrix Chain Multiplication and Longest Common Subsequence

Matrix Chain Mulitplication Matrix chain multiplication finds the optimal parenthesization to minimize scalar multiplications. The recurrence relation is: m[i,j] = 0 if i = j min(m[i,k] + m[k+1,j] + p[i-1]*p[k]*p[j]) for i ≤ k < j if i < j Three nested loops are required: Outer loop: chain len...