Given a sorted list of disjoint intervals and a cut interval, we need to remove all parts that intersect with the cut interval and return the remaining portions. This is useful for scheduling, range queries, and interval manipulation problems. Problem Understanding For each interval in our list, we check if it intersects with the cut interval. If it does, we keep only the non-overlapping parts. If it doesn't intersect at all, we keep the entire interval. Interval Cutting Example Original: [2, ... Read More
Suppose we have a list of numbers called nums and we are placed currently at nums[0]. On each step, we can either jump from the current index i to i + 1 or i - 1 or j where nums[i] == nums[j]. We have to find the minimum number of steps required to reach the final index. So, if the input is like nums = [4, 8, 8, 5, 4, 6, 5], then the output will be 3, as we can jump from index 0 to index 4 as their values are both 4. And then we jump back ... Read More
Finding friend groups in a network is a classic graph connectivity problem. We need to count the number of connected components where each person is represented as a node and friendships as edges. This can be solved using Depth-First Search (DFS) to traverse connected friends. Understanding the Problem Given a friends list where friends[i] contains the indices of people that person i is friends with, we need to find how many separate friend groups exist. Two people belong to the same group if there's a path of mutual friendships connecting them. ... Read More
Suppose we have a 2D binary matrix. For any row or column in the given matrix we can flip all the bits. If we can perform any number of these operations, and we treat each row as a binary number, we have to find the largest sum that can be made of these numbers. So, if the input is like ? 0 ... Read More
The Campus Bikes II problem involves assigning unique bikes to workers on a 2D grid such that the total Manhattan distance is minimized. Given N workers and M bikes (where N ≤ M), we need to find the optimal assignment. The Manhattan distance between two points p1 and p2 is calculated as: |p1.x - p2.x| + |p1.y - p2.y|. Problem Example Given workers = [[0, 0], [2, 1]] and bikes = [[1, 2], [3, 3]]: ... Read More
Serialization converts a binary search tree into a string format that can be stored or transmitted, while deserialization reconstructs the tree from that string. This is useful for saving tree data to files or sending it over networks. Problem Overview Given a binary search tree, we need to serialize it into a string and then deserialize it back to the original tree structure. The serialization uses level-order traversal with dots as separators and 'N' for null nodes. 5 2 ... Read More
The Max Increase to Keep City Skyline problem asks us to find the maximum total sum that building heights can be increased while maintaining the original skyline when viewed from all four directions. The skyline from each direction is determined by the maximum height in each row (left/right view) and each column (top/bottom view). Problem Understanding Given a 2D grid where each value represents a building height, we need to ? Calculate the skyline from left/right (maximum in each row) Calculate the skyline from top/bottom (maximum in each column) For each position, the maximum possible height ... Read More
A log storage system manages logs with unique IDs and timestamps. Each timestamp follows the format Year:Month:Day:Hour:Minute:Second (e.g., "2019:01:01:23:59:59") with zero-padded decimal numbers. We need to implement two main functions: put(id, timestamp) − Stores a log with its unique ID and timestamp retrieve(start, end, granularity) − Returns log IDs within a time range based on specified granularity (Year, Month, Day, Hour, Minute, Second) How Granularity Works The granularity parameter determines the precision level for comparison. For example, with granularity "Day", timestamps are compared only up to the day level, ignoring hours, minutes, and seconds. ... Read More
In this article, we are going to learn how to insert an item in a sorted list while maintaining the order. Python has a built-in module called bisect that helps us insert any element in the appropriate position in the list efficiently. Using bisect.insort() The bisect.insort() method uses binary search to find the correct insertion point and inserts the element while maintaining the sorted order ? # importing the module import bisect # initializing the list, element numbers = [10, 23, 27, 32] element = 25 # inserting element using bisect.insort(list, element) bisect.insort(numbers, element) ... Read More
In Python, intersecting two dictionaries through keys means creating a new dictionary containing only the keys that exist in both dictionaries. This is useful for finding common data between two datasets. Input: dict_1 = {'A': 1, 'B': 2, 'C': 3} dict_2 = {'A': 1, 'C': 4, 'D': 5} Output: {'A': 1, 'C': 3} Using Dictionary Comprehension Dictionary comprehension provides the most readable approach to intersect dictionaries by keys ? # initializing the dictionaries dict_1 = {'A': 1, 'B': 2, 'C': 3} dict_2 = {'A': 1, 'C': 4, 'D': 5} # finding ... Read More
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Economics & Finance