Finding maximum values in sliding windows of size k is a common problem. We'll explore three approaches: brute force, optimized tracking, and using a deque for efficient sliding window maximum. Problem Understanding Given a list nums = [12, 7, 3, 9, 10, 9] and k = 3, we need to find the maximum value in each sublist of size 3: [12, 7, 3] → max = 12 [7, 3, 9] → max = 9 [3, 9, 10] → max = 10 [9, 10, 9] → max = 10 Method 1: Brute Force Approach ... Read More
Suppose we have a list with only two values 1 and −1. We have to find the length of the longest sublist whose sum is 0. So, if the input is like nums = [1, 1, −1, 1, 1, −1, 1, −1, 1, −1], then the output will be 8, as the longest sublist is [−1, 1, 1, −1, 1, −1, 1, −1] whose sum is 0. Algorithm To solve this, we will follow these steps − Create an empty hash map to store cumulative sum positions ... Read More
Finding the length of the longest substring with at most k distinct characters is a classic sliding window problem. We use two pointers to maintain a valid window and a hash map to track character frequencies. Problem Understanding Given a string s and number k, we need to find the maximum length of any substring that contains at most k distinct characters. For example, if k = 3 and s = "kolkata", the longest substrings with at most 3 distinct characters are "kolk" and "kata", both having length 4. Algorithm Steps We use the sliding ... Read More
Finding the longest path in a Directed Acyclic Graph (DAG) without repeated nodes is a classic dynamic programming problem. Since the graph has no cycles, we can use memoization with depth-first search to efficiently compute the longest path from any starting node. Problem Understanding Given a DAG represented as an adjacency list, we need to find the length of the longest simple path (without repeated nodes). The example graph below shows nodes 0-4 with the longest path being 0 → 1 → 3 → 4 → 2 with length 4. ... Read More
When working with binary trees, we sometimes need to find the longest path where the sum of all node values is an even number. This problem requires tracking paths with even and odd sums separately using dynamic programming. Problem Understanding Given a binary tree, we need to find the length of the longest path whose sum is even. For example, in a tree with path [5, 2, 4, 8, 5], the sum is 24 (even) and the path length is 5. 2 5 ... Read More
The longest common subsequence (LCS) problem for three strings finds the maximum length of characters that appear in the same relative order across all three strings. This is an extension of the classic two-string LCS problem using dynamic programming. So, if the input is like s1 = "ababchemxde", s2 = "pyakcimde", s3 = "oauctime", then the output will be 4, as the longest common subsequence is "acme". Algorithm Steps To solve this, we will follow these steps − m := size of s1, n := size of s2, o := size of s3 dp := ... Read More
An arithmetic subsequence is a sequence where the difference between consecutive elements is constant. Given a list of numbers, we need to find the length of the longest arithmetic subsequence that can be formed. For example, if we have nums = [1, 4, 7, 10, 13, 20, 16], the longest arithmetic subsequence is [1, 4, 7, 10, 13, 16] with length 6, where each consecutive difference is 3. Algorithm Approach We use dynamic programming with a dictionary to store subsequence lengths. For each pair of elements, we calculate their difference and track the longest subsequence ending at ... Read More
Suppose we have a list of numbers called nums that is sorted in non-decreasing order. We need to check whether it can be split into subsequences where each subsequence has a minimum length of 3 and contains consecutively increasing numbers. So, if the input is like nums = [2, 3, 4, 4, 5, 6, 7], then the output will be True, as we can split the list into [2, 3, 4] and [4, 5, 6, 7]. Algorithm Approach To solve this problem, we will follow these steps − counts − A ... Read More
Sometimes we need to split a list into sublists where each sublist is strictly increasing and has a minimum size. This problem asks us to determine if such a split is possible for a given list and minimum size k. The key insight is that duplicate elements cannot be in the same strictly increasing sublist. If we have too many duplicates, we might not be able to form enough sublists of the required minimum size. Algorithm To solve this problem, we follow these steps ? Count the frequency of each element in the list Find ... Read More
Finding the largest sum of three non-overlapping sublists of the same size is a dynamic programming problem. We need to efficiently calculate sublist sums and track the maximum possible combinations. So, if the input is like nums = [2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3] k = 3, then the output will be 27, as we can select the sublists [2, 2, 2], [4, 4, 4], and [3, 3, 3], total sum is 27. Algorithm Steps To solve this, we will follow these steps − Create prefix ... Read More
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Economics & Finance