The Weighted Interval Scheduling Problem revolves around a set of intervals, each having an associated weight. In this article, we will implement the Weighted Interval Scheduling algorithm in go, using two methods: Recursive and Dynamic Programming. This classic optimization problem involves selecting non-overlapping intervals with maximum total weight. Explanation Recursive Method The Recursive Method takes a straightforward yet elegant approach. It examines each interval one by one and considers two scenarios − whether to include the current interval or skip it. This method utilises recursion to explore all possible combinations of intervals, calculating the maximum weight. While ... Read More
In this article, we will explore the implementation of a Treap data structure in Golang using two different methods. A Treap is a combination of a binary search tree and a binary heap, making it an efficient data structure for maintaining a set of ordered elements while also ensuring balanced priority. The first method will utilise a recursive approach for building and maintaining the Treap, while the second method will implement an iterative approach. The examples below showcase the creation and traversal of a randomised binary search tree, Explanation A Treap is a cool combination of two other structures, a ... Read More
A BitSet is a data structure that represents a fixed-size set of binary values, where each value can be either 0 or 1. It is commonly used for efficiently storing and manipulating large sets of boolean values. In this article, we will implement a bitset in go, using two different methods, the first one involves the use of slice of booleans as well as the second one involves using bit manipulation with unsigned integers. Implementation here means that we are going to perform various operations like setting, clearing and testing of individual bits within a bitset data structure. Explanation ... Read More
Tries are tree-like data structures used for efficient storage and retrieval of strings, making them invaluable for tasks like autocomplete, dictionary implementation, and pattern matching. The compressed node technique optimises space usage by merging common prefixes among nodes, resulting in a more memory-efficient Trie. In this article, we will explore the implementation of a Trie with Compressed Nodes in Golang using two methods to implement the Trie with Compressed Nodes, the first method utilises maps, and the second method uses arrays. Explanation A compressed trie is a trie data structure that saves the space by combining consecutive nodes with ... Read More
A Double Ended Priority Queue, in short DEPQ is a data structure that extends the functionality of a standard priority queue. In this article, we will implement a double ended priority queue in Golang using two methods: the first method uses two separate heaps for maximum and minimum priorities, while the second method augments a single heap with additional information for efficient queries. In the code examples we are going to perform the operations like insertion retrieval, deletion and updation. Explanation Double ended priority queue is a data structure that allows insertion and deletion operations and it allows efficient ... Read More
Hash tables are efficient data structures used to store key-value pairs, making them essential for various applications. Linear probing is a collision resolution technique that helps handle situations when two keys map to the same index in the hash table. In this article, we will explore the implementation of a Hash Table with Linear Probing in Golang, using arrays and maps, gaining insights into their workings and practical applications. In the below examples we are going to perform insertion and retrieval operations using a hash mechanism and collision resolution strategy. Explanation In the below example, keys [10 , 25, ... Read More
A deque is a versatile data structure that allows insertion and deletion of elements from both ends efficiently. The doubly linked list provides an excellent foundation for building a deque as it allows easy traversal in both directions. In this article, we will explore deque using doubly linked lists in go with two methods: using a custom doubly linked list and using the built-in container/list package in Golang. Here in the below examples we will showcase the operations of a double ended queue, we will perform the insertion and deletion operations at both the ends. Explanation As you can see ... Read More
In the field of computer, the terms “Bit”, “Byte”, and “Memory” are very commonly used. Memory is defined as a property of a device responsible for storing information. Bit and Bytes are two fundamental measurement units of memory capacity. A bit is used to represent a binary digit, either a 0 or a 1. While the term byte is used to specify a group of 8-bits. In computer systems, digital memory can be organized either in bits or bytes. In this article, we will discuss the various important concepts related to the topic “bit and byte organized memory”. Concept of ... Read More
In digital image processing, the process of transforming a color image or a grayscale image into a binary image is referred to as binarization of the image. In a binary image, the image pixels are represented using binary values i.e., 0 and 1, where 0 represents the black pixel and 1 represents the white pixel. Binarization is an efficient technique to simplify the image analysis and it also helps in extracting important characteristics of the image. Process of Binarization of Digital Images The process of binarization of a digital image is based on the use of a threshold value to ... Read More
Several techniques have been developed to simplify a complex Boolean expression into its simplest form. K-Map or Karnaugh Map is one of such minimization or simplification techniques. The K-Map or Karnaugh Map is a graph or chart which composed of an arrangement of adjacent cells. Where, each cell of the K-Map represents a particular combination of variables in either sum or product form. The K-map can be used to simplify Boolean functions involving any number of variables. But, the simplification of a Boolean function using K-map becomes tedious for problems involving five or more variables. Therefore, in actual practice, the ... Read More