In a binary tree, we often need to find the leftmost deepest node. This means finding the node at the maximum depth, and if multiple nodes exist at that depth, we return the leftmost one. So, if the input is like 13 12 14 16 22 ... Read More
Suppose we have one n × n matrix containing values from 0 to n. Here 0 represents an unfilled square, we have to check whether we can fill empty squares such that in each row and each column every number from 1 to n appears exactly once. This is essentially a Latin square completion problem where we need to verify if a partially filled grid can be completed following sudoku-like rules. Example Input and Output So, if the input is like ? 002 201 123 Then the output will be True, as we ... Read More
In a binary tree, we often need to find the maximum sum path between any two nodes. This path doesn't have to go through the root and can be between any two nodes in the tree. Given a binary tree like this: .node-circle { fill: #e6f3ff; stroke: #0066cc; stroke-width: 2; } .node-text { font-family: Arial, sans-serif; font-size: 12px; text-anchor: middle; dominant-baseline: central; } .edge-line { stroke: #666; stroke-width: 2; } ... Read More
The problem of finding the largest sum of non-adjacent elements in a list is a classic dynamic programming problem. Given a list of numbers, we need to select elements such that no two selected elements are adjacent, and their sum is maximized. So, if the input is like [3, 5, 7, 3, 6], then the output will be 16, as we can take 3, 7, and 6 to get the maximum sum without selecting adjacent elements. Algorithm Approach We use dynamic programming with two variables to track the maximum sum: take: Maximum sum including the ... Read More
The Maximum Subarray Problem asks us to find the contiguous sublist within an array that has the largest sum. This is a classic problem that can be efficiently solved using Kadane's Algorithm with dynamic programming. For example, given the array [-2, 1, -3, 4, -1, 2, 1, -5, 4], the maximum sum subarray is [4, -1, 2, 1] with sum 6. Algorithm Approach We use dynamic programming to solve this problem efficiently ? Create an array dp of the same size as input array Set dp[0] = ... Read More
Program to find k-sized list where difference between largest and smallest item is minimum in Python
Given a list of numbers and an integer k, we need to select k elements to create a sublist where the difference between the largest and smallest elements is minimized. This problem requires finding the optimal contiguous subsequence after sorting. For example, if nums = [3, 11, 6, 2, 9] and k = 3, the output will be 4 because the best sublist we can make is [2, 3, 6] with difference 6 - 2 = 4. Algorithm To solve this problem, we follow these steps: Sort the input list to group similar numbers together ... Read More
Suppose we have a list of strings words, we have to group all anagrams together and return the size of the largest grouping. Anagrams are words formed by rearranging the letters of another word, like "xyz" and "zyx". So, if the input is like words = ["xy", "yx", "xyz", "zyx", "yzx", "wwwww"], then the output will be 3, as ["xyz", "zyx", "yzx"] is the largest grouping. Algorithm To solve this, we will follow these steps − Create a dictionary to store anagram groups Initialize result as 0 For each ... Read More
Suppose we have a string s of lowercase alphabet characters, and another number k. We need to find the minimum number of required changes in the string so that the resulting string has at most k distinct characters. A change means modifying a single character to any other character. So, if the input is like s = "wxxyyzzxx", k = 3, then the output will be 1, as we can change the letter "w" to get 3 distinct characters (x, y, and z). Approach To solve this problem, we will follow these steps − count ... Read More
Suppose we have a singly linked list, we have to find the value of the k-th last node (0-indexed) in a single pass. This is a classic two-pointer technique problem. So, if the input is like node = [5, 4, 6, 3, 4, 7], k = 2, then the output will be 3, as the second last (index 3) node has the value of 3. Algorithm To solve this, we will follow these steps − Initialize two pointers: klast and last, both pointing to the head Move the last pointer k steps ahead Move both ... Read More
This problem involves finding the maximum sum by popping exactly k elements from a list of stacks. We can only pop elements from the top of each stack, making this a dynamic programming problem where we explore different combinations of popping elements. The key insight is that for each stack, we can choose to pop 0, 1, 2, ... up to all elements from that stack, and recursively solve for the remaining stacks with the remaining number of elements to pop. Algorithm Approach We use a recursive function that takes the current stack index and the number ... Read More
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Economics & Finance